From d90e321b6ed78a147f1869a423d8d010d2c8d9a0 Mon Sep 17 00:00:00 2001 From: koalaman Date: Thu, 29 Dec 2016 14:57:22 -0800 Subject: [PATCH] Created SC2195 (markdown) --- SC2195.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 SC2195.md diff --git a/SC2195.md b/SC2195.md new file mode 100644 index 0000000..5cc9386 --- /dev/null +++ b/SC2195.md @@ -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. \ No newline at end of file