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

如何在Bash的复杂条件表达式中使用逻辑not运算符?,bash,conditional,logical-operators,Bash,Conditional,Logical Operators,我想在bash中为以下条件表达式设置逻辑not, 我该怎么做 if [[ $var==2 || $var==30 || $var==50 ]] ; then do something fi 我怎样才能在上面的表达式中不直接预加逻辑,将其再次更改为以下内容是非常繁琐的: if [[ $var!=2 && $var!=30 && $var==50 ]] ; then do something fi 谢谢你的提示 if ! [[ $var == 2 || $

我想在bash中为以下条件表达式设置逻辑not, 我该怎么做

if [[ $var==2 || $var==30 || $var==50 ]] ; then
  do something
fi
我怎样才能在上面的表达式中不直接预加逻辑,将其再次更改为以下内容是非常繁琐的:

if [[ $var!=2 && $var!=30 && $var==50 ]] ; then
  do something
fi
谢谢你的提示

if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then
  do something
fi
或:

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

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

虽然这并不值得称赞,但如果
$var
有时可能不是数字,或者没有值或未设置,则需要谨慎,因为它可能表示默认值为0,或者如果是变量名称,则表示另一个变量的另一个值

if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then
  do something
fi
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