如何在Bash中使用复杂条件表达式中的逻辑非运算符?

wis*_*wit 17 bash conditional logical-operators

我想在bash中有以下条件表达式的逻辑,我该怎么做?

if [[ $var==2 || $var==30 || $var==50 ]] ; then
  do something
fi
Run Code Online (Sandbox Code Playgroud)

我怎样才能在上面的表达式中直接添加逻辑,将它再次更改为以下内容非常繁琐:

if [[ $var!=2 && $var!=30 && $var==50 ]] ; then
  do something
fi
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何提示!

kon*_*box 31

if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then
  do something
fi
Run Code Online (Sandbox Code Playgroud)

要么:

if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then
  do something
fi
Run Code Online (Sandbox Code Playgroud)

一个好的做法是在条件运算符和操作数之间有空格.

有些人还可以建议,如果您只是比较数字,请使用算术运算符,或者只使用(( )):

if ! [[ var -eq 2 || var -eq 30 || var -eq 50 ]] ; then
  do something
fi

if ! (( var == 2 || var == 30 || var == 50 )) ; then
  do something
fi
Run Code Online (Sandbox Code Playgroud)

虽然它不值得称道,但如果$var有时可能不是数字或没有值或未设置,则应给予警告,因为如果它是变量的名称,它可能意味着0作为默认值或另一个值的另一个值.