1 SC1136
Vidar Holen edited this page 2019-10-13 20:34:30 -07:00

Unexpected characters after terminating ]. Missing semicolon/linefeed?

Problematic code:

if [ -e "foo.txt" ]: then
  echo "Exists"
fi

Correct code:

if [ -e "foo.txt" ]; then
  echo "Exists"
fi

Rationale:

ShellCheck found unexpected characters after the ] or ]] in a test expression. In the example, a colon was accidentally used instead of a semicolon.

Similarly, a missing space before a comment ([ -e foo ]#comment), an additional square bracket ([[ -e foo ]]]), or a missing semicolon before a then on the same line (if [ foo ]then) can cause this warning.

Make sure the ] or ]] is not immediately followed by another shell word character.

Exceptions:

None

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