Skip to content
koalaman edited this page Jul 18, 2015 · 6 revisions

Instead of '[ true ]', just use 'true'.

Problematic code:

if [ true ]
then
  echo "always triggers"
fi

Correct code:

if true
then
  echo "never triggers"
fi

Rationale:

This is a stylistic suggestion to use true instead of [ true ].

[ true ] seems to suggest that the value "true" is somehow relevant to the statement. This is not the case, it doesn't matter. You can replace it with [ false ] or [ wombat ], and it will still always be true:

String  | In brackets  | Outside brackets
--------+--------------+-----------------
true    | true         | true
false   | true         | false
wombat  | true         | unknown command

It's therefore better to use it without brackets, so that the "true" actually matters.

Exceptions:

None.

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally