Skip to content
koalaman edited this page Dec 29, 2016 · 3 revisions

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.

ShellCheck

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.

Clone this wiki locally