diff --git a/SC1033.md b/SC1033.md new file mode 100644 index 0000000..3c35bc7 --- /dev/null +++ b/SC1033.md @@ -0,0 +1,43 @@ +## Test expression was opened with double `[[` but closed with single `]`. Make sure they match. + +(or SC1034 for vice versa) + +### Problematic code: + +```sh +[[ -z "$var" ] +``` + +### Correct code: + +```sh +[[ -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: + +```sh +# Invalid +[[ x ] || [ y ]] +``` +Instead, use one of +You would instead use two separate test expressions joined by `||`: + +```sh +# 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! \ No newline at end of file