Created SC2195 (markdown)

koalaman
2016-12-29 14:57:22 -08:00
parent 1ad7819196
commit d90e321b6e

36
SC2195.md Normal file

@@ -0,0 +1,36 @@
## This pattern will never match the case statement's word. Double check them.
### Problematic code:
```sh
case "$var " of # Trailing space
value) echo "Match"
esac
```
### Correct code:
```sh
case "${var}" of # No trailing space
value) echo "Match"
esac
```
### Rationale:
ShellCheck has detected that one of the patterns in a `case` statement will never match.
Often, this is due to mistaes in the case statement word that results in unintended literal characters. In the problematic code, there's a trailing space that will prevent the match from ever happening.
For more examples of when this could happen, see [SC2193](https://github.com/koalaman/shellcheck/wiki/SC2193) for the equivalent warning for `[[ .. ]]` statements.
Note that ShellCheck warns about individual patterns in a branch, and will flag `*.png` in this example even though the branch is not dead:
```
case "${img}.jpg" in
*.png | *.jpg) echo "It's an image"
esac
```
### Exceptions:
None. If you encounter a bug and wish to [[ignore]] this warning, make sure the directive goes in front of the `case` and not the individual branch.