Skip to content
Vidar Holen edited this page May 17, 2025 · 1 revision

You probably wanted || here, otherwise it's always false.

Problematic code:

if [[ $answer == yes && $answer = auto ]]
then
  echo "Feature Enabled"
fi

Correct code:

if [[ $answer == yes || $answer = auto ]]
then
  echo "Feature Enabled"
fi

Rationale:

The problematic condition will never trigger because of a logic error.

In English one think say "I want to check for the answers yes and auto", but the test ends up checking that the answer is both "yes" and "auto" at the same time, which it can't be (if the answer is "yes", it's necessarily not "auto", and vice versa).

The correct check is "if the answer is yes or if the answer is auto", which will be true if the user enters either "yes" or "auto".

Exceptions:

None

Related resources:

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!

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