You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本的单个if语句中包含多个与或条件

Bash单个if语句中组合多与或条件的正确写法

你可以通过两种方式在单个if语句里组合多个与或条件,同时修正你原代码里的小问题:

方式1:保留多个[[ ]]结构(拆分条件)

原代码里的[[(写法缺少空格且存在多余嵌套括号,修正后:

if [[ "$op_type" == "roll" ]] || [[ "$Action" == "up" && "$Status" == "Failed" ]] || [[ "$Action" == "up" && "$Status" == "InProgress" ]]; then
    # 这里写入需要执行的命令
fi

方式2:合并为单个[[ ]]结构(更简洁)

利用[[ ]]内部支持&&和||的特性,结合括号明确优先级,还能简化重复的条件:

if [[ "$op_type" == "roll" || ( "$Action" == "up" && ( "$Status" == "Failed" || "$Status" == "InProgress" ) ) ]]; then
    # 这里写入需要执行的命令
fi

如果你的Bash版本支持正则匹配(一般4.0及以上版本都支持),还可以进一步简化Status的判断:

if [[ "$op_type" == "roll" || ( "$Action" == "up" && "$Status" =~ ^(Failed|InProgress)$ ) ]]; then
    # 这里写入需要执行的命令
fi

关键注意点

  • 变量引用始终用双引号包裹,避免因变量值含空格、特殊字符导致解析错误
  • [[ ]]内部的&&优先级高于||,用括号()可以强制改变运算顺序,确保逻辑符合预期
  • 原代码里的[[(是语法错误,[[和后续条件之间必须有空格

内容的提问来源于stack exchange,提问作者arpitha patel22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 04:15:42