如何在bash脚本中的if-else中混合和/或运算符?

时间:2014-04-02 11:22:18

标签: bash

我一直试图找到例子,但却无处可去。

我试图将这个表达式(不那么复杂)写成bash中的if-else语句。

if (expr1 and (expr2 or expr3)) then
  do-something
fi

有什么想法可以做到吗?感谢

2 个答案:

答案 0 :(得分:2)

表达它的通常方式是:

if [ expr1 ] && [[ expr2 || expr3 ]]; then
   # do something
fi

而不是使用测试命令并使用以下形式:

  EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.

来自help [[

  EXPR1 || EXPR2    True if either EXPR1 or EXPR2 is true; else false

答案 1 :(得分:0)

你可以这样做

if [ expr1 ] && ([ expr2 ] || [ expr3 ]); then
  #do something
else
   #do something else
fi

你可以使用一个巧妙的技巧来快速测试一个条件:

[ expr1 ] && ([ expr2 ] || [ expr3 ]) && echo "something" || echo "something else"