Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash脚本的if-else中混合和/或运算符?_Bash - Fatal编程技术网

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

如何在bash脚本的if-else中混合和/或运算符?,bash,Bash,我一直在努力寻找例子,但一无所获 我试图在bash中将这个表达式(不那么复杂)写成if-else语句 if (expr1 and (expr2 or expr3)) then do-something fi 你知道怎么做吗?谢谢通常的表达方式是: if [ expr1 ] && [[ expr2 || expr3 ]]; then # do something fi 而不是使用test命令并使用以下形式: EXPR1 -o EXPR2 True if eithe

我一直在努力寻找例子,但一无所获

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

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

你知道怎么做吗?谢谢

通常的表达方式是:

if [ expr1 ] && [[ expr2 || expr3 ]]; then
   # do something
fi
而不是使用test命令并使用以下形式:

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

  EXPR1 || EXPR2    True if either EXPR1 or EXPR2 is true; else false
你可以像我一样

if [ expr1 ] && ([ expr2 ] || [ expr3 ]); then
  #do something
else
   #do something else
fi
有一个简单的技巧可以用来快速测试条件:

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

如果[expr1]&&[expr2-o expr3],您可以使用
,但我不确定这是否是最好的方法。尽管如此:
[“$a”-eq 1]&&&&[“$b”-eq 3-o”$c”-eq 2]&&echo“yes”
a和(b或c)
b或c和a相同
请参见此处的第7.2.4章:
cond&&ifies | | ifno
-这很好,但必须小心,因为当
ifes
失败时,无论如何你都会以
ifno
结束。。。