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

Bash脚本未触发TRUE分支,请求排查语法问题

Bash脚本条件判断的语法问题修复

你的脚本存在两处语法错误,导致条件无法正确触发预期结果:

  1. if多条件判断写法错误
    在[ ](对应test命令)中,不能直接用||连接多个条件,正确写法有两种:
  • 使用-o(逻辑或的缩写)作为条件连接符:
if [ "$RESULT" = "Exited (0) Less than a second ago" -o "$RESULT" = "Stop" ]
  • 拆分为两个独立的[ ]判断,用||连接:
if [ "$RESULT" = "Exited (0) Less than a second ago" ] || [ "$RESULT" = "Stop" ]
  1. elif通配符匹配失效
    [ ]里的=是精确字符串匹配,不会解析通配符*。要实现包含"Up"的模糊匹配,有两种可行方案:
  • 改用Bash扩展条件判断[[ ]],它原生支持通配符匹配:
elif [[ "$RESULT" = *"Up"* ]]
  • 通过case语句实现模式匹配:
elif case "$RESULT" in *"Up"*) true;; *) false;; esac

另外补充一个语义问题:你elif分支的输出stopped and exited和逻辑不符,改成running会更贴合"包含Up"的容器状态,不过这不属于语法问题。

修复后的完整脚本示例:

RESULT="Exited (0) Less than a second ago"
if [ "$RESULT" = "Exited (0) Less than a second ago" ] || [ "$RESULT" = "Stop" ]
then
    echo 'exited'
elif [[ "$RESULT" = *"Up"* ]]
then
    echo 'running'
else
    echo 'Docker already removed'
fi

内容的提问来源于stack exchange,提问作者QA Tester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:58:49