【问题标题】:is it possible to do `do; condition; while;` on bash? [duplicate]有没有可能做`做;健康)状况;而;`在bash? [复制]
【发布时间】:2023-03-20 14:59:01
【问题描述】:

是否可以在bash 中进行do; condition; while 循环?

例如:

do
curl -f google.com/demo
while [ $? -ne 0 ]
done

如果我这样做

while [ $? -ne 0 ]
do curl -f google.com/demo
done

...我依赖循环前的命令。

【问题讨论】:

    标签: bash


    【解决方案1】:

    不,这是不可能的。

    唯一有效的替代方法是在无限循环中使用 break:

    while :; do
       if ! curl -f google.com/demo
       then
           break
       fi
    done
    

    无论如何,这看起来像 XY 问题,而您真正想要的可能是循环直到命令返回非零:

    while ! curl -f google.com/demo; do :; done
    

    until curl -f google.com/demo; do :; done
    

    【讨论】:

    • 我假设他想重复命令直到返回值为 0:until curl -f google.com/demo; do :; done
    • @Cyrus Och,对,没想到太久。
    • 我删掉了the $? antipattern
    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多