2 SC2171
Joachim Ansorg edited this page 2021-11-12 19:43:33 +01:00

Found trailing ] outside test. Add missing [ or quote if intentional.

Problematic code:

if foo -eq bar ]; then true; fi

or

tr -d ]

Correct code:

if [ foo -eq bar ]; then true; fi

or

tr -d ']'

Rationale:

ShellCheck found a non-test command that ends with ] or ]].

If this was intended to be a test expression like in the first example, add the missing [ or [[.

If the ] was intended to be literal, like in tr -d ], you can quote to make this obvious.

Exceptions:

tr -d ] is valid and not different from tr -d ']', so in these cases you can ignore the error instead.

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!