case "$var " in # Trailing space
value) echo "Match"
esaccase "${var}" in # No trailing space
value) echo "Match"
esacShellCheck 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"
esacNone. 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.