SC2056 – ShellCheck Wiki

See this page on GitHub

Sitemap


You probably wanted && here

Problematic code:

if  (( $1 != 0 || $1 != 3 ))
then
  echo "$1 is not 0 or 3"
fi

Correct code:

if  (( $1 != 0 && $1 != 3 ))
then
  echo "$1 is not 0 or 3"
fi

Rationale:

This is not a bash issue, but a simple, common logical mistake applicable to all languages.

(( $1 != 0 || $1 != 3 )) is always true:

(( $1 != 0 && $1 != 3 )) is true only when $1 is not 0 and not 3:

This statement is identical to ! (( $1 == 0 || $1 == 3 )), which also works correctly.

Exceptions

None.


ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.