Skip to content
John Gardner edited this page Dec 22, 2021 · 3 revisions

Test expression was opened with double [[ but closed with single ]. Make sure they match.

(or SC1034 for vice versa)

Problematic code:

[[ -z "$var" ]

Correct code:

[[ -z "$var" ]]

Rationale:

ShellCheck found a test expression [ ... ] (POSIX) or [[ ... ]] (ksh/bash), but where the opening and closing brackets did not match (i.e. [[ .. ] or [ .. ]]). The brackets need to match up to work.

Note in particular that [..] do not work like parentheses in other languages. You can not do:

# Invalid
[[ x ] || [ y ]]

You would instead use two separate test expressions joined by ||:

# Valid basic test expressions (sh/bash/ksh)
[ x ] || [ y ]

# Valid extended test expressions (bash/ksh)
[[ x ]] || [[ y ]]

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 S001. Use GitHub "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally