小编典典

重复运行一个shell命令直到它失败?

all

我写了一个不可靠地失败的模糊测试。我添加了一些调试代码,但现在我想运行测试直到它失败,这样我就可以收集调试输出。

我已经设置了测试,所以我可以使用:

./runtest

我目前的解决方案是编写一个untilfail脚本:

#!/bin/bash
$@
while [ $? -eq 0 ]; do
    $@
done

然后使用它:

untilfail ./runtest

有没有更简单的解决方案?


阅读 109

收藏
2022-05-26

共1个答案

小编典典

while需要一个命令来执行,所以你可以使用更简单的

while ./runtest; do :; done

./runtest这将在返回非零退出代码(通常表示失败)时停止循环。

不过,为了进一步简化您当前的解决方案,您只需将 untilfail 脚本更改为如下所示:

#!/bin/bash

while "$@"; do :; done

然后你可以用你已经在使用的任何命令来调用它:

untilfail ./runTest --and val1,val2 -o option1 "argument two"
2022-05-26