Bash测试中的一组复合条件

d3p*_*3pd 70 bash if-statement

我希望在Bash if语句中包含一些条件组.具体来说,我正在寻找以下内容:

if <myCondition1 and myCondition2> or <myCondition3 and myCondition4> then...
Run Code Online (Sandbox Code Playgroud)

我如何按照我在Bash中使用if语句描述的方式将条件组合在一起?我感谢你对此有任何想法.

Wil*_*iam 147

使用&&(和)和|| (或)运营商:

if [[ expression ]] && [[ expression ]] || [[ expression ]] ; then
Run Code Online (Sandbox Code Playgroud)

它们也可以在单个[[]]中使用:

if [[ expression && expression || expression ]] ; then
Run Code Online (Sandbox Code Playgroud)

最后,您可以将它们分组以确保评估顺序:

if [[ expression && ( expression || expression ) ]] ; then
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在第一个示例中,`&&`和`||`是shell的管道运算符.在第二个和第三个例子中,它们是由[[[...]]`条件命令解析器处理的运算符.第一个工作在退出值为零和非零,其余工作在返回值true和false.虽然所有的例子都是_work_,但它们的工作原因各不相同. (20认同)
  • IMO这是一个比"重复"更清楚的答案.在第三个例子中,确保使用双括号 - "[[]]` (8认同)
  • 对于那些关心与其他shell类型的兼容性的人,我会注意到执行上述操作似乎不适用于单个括号`[]`. (3认同)