This pattern will never match the case statement's word. Double check them.
Problematic code:
case "$var " in # Trailing space
value) echo "Match"
esac
Correct code:
case "${var}" in # 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 mistakes 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 succeeding.
For more examples of when this could happen, see 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.
-
Installation
-
Usage
-
Integrating and extending
Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.