すべての良い答えをすでにここ - ちょうど@ chorobaの補正を使用して元のループが正常に立て続けに生成されたプロセスの非常に厄介な無限の文字列を作ることに注意してください。
いくつかの便利なバリエーションがあります。このようにループ内に遅延を投げ込むことができます -
while true; do sleep 1 && date & done
しかし、それによって生成されるプロセス間に遅延は発生しません。あなたはそれが産卵を停止する場合は1に必ずfoo
セットの指揮を行い、その後
echo 0 > cond # false
delay=10 # secs
その後、
until (($(<cond))) do; sleep $delay && foo & done
または
while sleep $delay; do (($(<cond))) || foo & done
:もっとこのような何かを考えてみましょう。
しかし、私はいわば、バックグラウンドで実行されているループのフォアグラウンドでfoo
を実行し、そして唯一のきれいfoo
終了するまで再試行します
until foo; do sleep $delay; done &
のような、より制御アプローチのために試してみました。
あなたは考えを得る。