case "$var " in # Trailing space
value) echo "Match"
esac
case "${var}" in # No trailing space
value) echo "Match"
esac
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
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.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.