SC2195 – ShellCheck Wiki

See this page on GitHub


This pattern will never match the case statement's word. Double check them.

Problematic code:

case "$var " in      # Trailing space
  value) echo "Match"

Correct code:

case "${var}" in     # No trailing space
  value) echo "Match"


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"


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.