反复运行一个shell命令,直到失败?
我写了一个模糊的testing,不可靠地失败。 我添加了一些debugging代码,但现在我想运行testing,直到失败,所以我可以收集debugging输出。
我已经安装了testing,所以我可以运行它使用:
./runtest
我目前的解决scheme是写一个untilfail
脚本:
#!/bin/bash $@ while [ $? -eq 0 ]; do $@ done
然后使用它:
untilfail ./runtest
有一个更简单的解决scheme?
while
需要一个命令来执行,所以你可以使用更简单
while ./runtest; do :; done
当./runtest
返回一个非零的退出码(这通常表示失败)时,这将停止循环。
如果你不想把一个复杂的pipe道线包装到一个shell脚本或函数中,那么这个工作就是这样的:
while true; do curl -s "https:..." | grep "HasErrors.:true" if [[ "$?" -ne 0 ]]; then break fi sleep 120 done
在这种情况下,HTTP请求总是返回200,但是也返回一些具有“HasErrors”属性的JSON:当出现错误时为true。