Created SC1033 (markdown)

Vidar Holen
2020-07-27 19:03:35 -07:00
parent 7186770583
commit 4aababfa8c

43
SC1033.md Normal file

@@ -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!