Skip to content
koalaman edited this page Apr 23, 2016 · 8 revisions

You need a space here

Problematic code:

if ![-z foo ]; then true; fi # if command `[-z' w/ args `foo', `]' fails..

Correct code:

if ! [ -z foo ]; then true; fi # if command `[' w/ args `-z', `foo', `]' fails..

Rationale:

Bourne shells are very whitespace sensitive. Adding or removing spaces can drastically alter the meaning of a script. In these cases, ShellCheck has noticed that you're missing a space at the position indicated.

Exceptions

ShellCheck does not understand Bash History Expansion, an interactive shell feature also using ! (such as !! to expand to the previous command).

These features are disabled by default in shells and very rarely used in scripts, but may occasionally be found in interactively sourced files like .bashrc. Please ignore the error in these cases.

Clone this wiki locally