時々成功する操舵命令があります。
ランニング:
cmd1 || cmd1
最初の実行が失敗した場合は2回実行されます。成功するまでcmd1を実行し続け、各実行間でスリープモードを維持するにはどうすればよいですか?ありがとうございます。
答え1
until
あなたのためにこれをします:
until cmd1; do sleep 1; done
これはcmd1
成功するまで実行され、各実行の間に1秒待ちます。
永久に実行されないようにするには、最大反復回数を追加できます。
max=5; until cmd1 || [[ "$max" -le 0 ]]; do sleep 1; ((--max)); done
成功すると、cmd1
式全体が成功し$?
ゼロになります。正常に実行されず、ループがcmd1
終了すると、式全体が失敗し、$?
ゼロではありません。これを使用して、実行するアクションを決定できます。
max=5
if until cmd1 || [[ "$max" -le 0 ]]; do sleep 1; ((--max)); done; then
echo Succeeded
else
echo Failed
fi
またはより具体的に言えば、
max=5
until cmd1 || [[ "$max" -le 0 ]]; do sleep 1; ((--max)); done
if [ "$?" = 0 ]; then
echo Succeeded
else
echo Failed
fi