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

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!

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