运行命令直到成功n次bash

时间:2015-05-12 17:35:08

标签: bash

如果返回不成功,我想多次运行一个命令 我已经开始使用以下循环

until find . -type f -exec md5sum {} \;
do
<something >
done

我希望在继续下一个文件之前运行大约n次 不知道我怎么能从这里继续。我试过使用return变量$?并使用此循环,但没有运气 另外,我如何使用上面的循环或这里提出的将find的输出放入变量 感谢

让我让这个更清晰

所以我实际上是用这个函数运行

fcn () {

    for file
    do
     until md5sum "$file"
        do
        <something >
        done
    done
}

使用

进行通话
find . -type f -print0 | xargs -0 -P 0 bash -c 'fcn "$@"'

所以md5sum "$file"的返回值是我已经研究过的

2 个答案:

答案 0 :(得分:1)

attempts=0
while ! result=$(find . …) || (( attempts++ > 5 )); do
    …
done

以上将成功查找命令的结果设置为变量result。如果尝试次数超过五次,那么循环将结束,但如果发生这种情况,则result的值不清楚。

答案 1 :(得分:0)

您可以在环境变量$?

中检查命令的结果

如果执行的最后一个命令成功,则此变量将保留值0

我的猜测是这样的:

while true; do
    $(command)
    if [ $? -eq 0 ] ; then
        exit
    fi
done

请记住,如果在您的命令之后执行了任何操作,$?的值将会更改。因此,只需确保在此处执行相关命令时,将$?值保存在另一个变量中或立即检查。