运行命令直到返回代码大于 x

Max*_*ulo 2 bash shell while-loop

在 bash 脚本中,我需要运行一个命令,直到返回值大于 127。

现在,我在子 shell 中运行该命令,输出到 /dev/null 并打印返回代码以便能够将其与测试进行比较:

while [ `command >/dev/null 2>&1; echo $?` -lt 128 ]; do sleep 1; done
Run Code Online (Sandbox Code Playgroud)

有更优雅的解决方案吗?看起来原生支持的唯一用例是测试 RC == 0 是否。

Joh*_*n B 5

我认为启动无限循环并在退出代码大于 127 时中断会更优雅。

while true; do
    command  # redirection is now optional
    [ $? -gt 127 ] && break
    sleep 1
done
Run Code Online (Sandbox Code Playgroud)