SC2127 – ShellCheck Wiki

See this page on GitHub

Sitemap


To use ${ ..; }, specify #!/usr/bin/env ksh.

(Or "To use cases with ;;&, specify #!/usr/bin/env bash)

Problematic code:

#!/usr/bin/env bash
var=${ mycmd; };

or

#!/usr/bin/env ksh
case "$1" in
  foo) echo "Foo!" ;;&
  f*) echo "F-something at least" ;;
esac

Correct code:

#!/usr/bin/env ksh
var=${ mycmd; };

or

#!/usr/bin/env bash
case "$1" in
  foo) echo "Foo!" ;;&
  f*) echo "F-something at least" ;;
esac

Rationale:

You are using a shell syntax feature not supported by the script's shell. Either rewrite the construct, or switch to a different shell interpreter.

Exceptions:

ShellCheck 0.10.0 and below warns about ${ ..; } command expansions when using Bash. However, Bash 5.3 added support for this construct. If you are using this construct in Bash 5.3, either ignore the warning or upgrade ShellCheck.


ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.