Skip to content
Vidar Holen edited this page Oct 14, 2019 · 1 revision

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

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

Related resources:

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