【问题标题】:How to use logical not operator in complex conditional expression in Bash? [duplicate]如何在 Bash 的复杂条件表达式中使用逻辑非运算符? [复制]
【发布时间】:2013-09-20 17:14:25
【问题描述】:

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

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

我怎样才能不直接在上面的表达式中添加逻辑,再次将其更改为这样的东西非常繁琐:

if [[ $var!=2 && $var!=30 && $var==50 ]] ; then
  do something
fi

感谢任何提示!

【问题讨论】:

    标签: bash conditional logical-operators


    【解决方案1】:
    if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then
      do something
    fi
    

    或者:

    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
    

    虽然$var 有时可能不是数字或没有值或未设置,但它并不值得称赞或谨慎,因为它可能意味着 0 作为默认值或另一个变量的另一个值,如果它是一个变量的名称。

    【讨论】:

      猜你喜欢
      • 2014-06-20
      • 1970-01-01
      • 2013-09-16
      • 2014-05-22
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      相关资源
      最近更新 更多