Clone
1
SC2333
Vidar Holen edited this page 2025-05-16 18:17:55 -07:00

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

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