Created SC2081 (markdown)

koalaman
2016-07-11 00:05:50 -05:00
parent eaed216e4d
commit 10021b79d3

30
SC2081.md Normal file

@@ -0,0 +1,30 @@
## `[ .. ]` can't match globs. Use `[[ .. ]]` or grep.
### Problematic code:
```sh
if [ $var == *[^0-9]* ]
then
echo "$var is not numeric"
fi
```
### Correct code:
```sh
if [[ $var == *[^0-9]* ]]
then
echo "$var is not numeric"
fi
```
### Rationale:
`[ .. ]` aka `test` can not match against globs.
In bash/ksh, you can instead use `[[ .. ]]` which supports this behavior.
In sh, you can rewrite to use `grep`.
### Exceptions:
None. If you are not trying to match a glob, quote the argument (e.g. `[ $var == '*' ]` to match literal asterisk.