while
次の形式のループがあります。
while :; do
performTask1 || break
performTask2 || break
performTask3 || break
...
performTaskX || break
done
基本的に、タスクの1つが間違っているたびにループから外したいと思います。これを達成するより良い方法はありますか?
他の方法は次のとおりです。
while :; do
performTask1 && performTask2 ... && performTaskX || break
done
しかし、これはまだ私に醜いようです。
答え1
デフォルトでは、ジョブが失敗した場合は、後続のジョブを実行しないでください。中断することなく、前のタスクの正常な完了に基づいてタスクを依存させます。
while
performTask1 &&
performTask2 &&
...
performTaskX-1 &&
performTaskX
do :; done
すべてのタスクを1行に入れる必要はありません。私の考えでは、この形式は見苦しくありません。
答え2
set -e
while :; do
performTask1
performTask2
performTask3
...
performTaskX
done
set +e
これで終了します。フルスクリプトエラーがある場合。
これがスクリプトの最後の部分ではない場合は、次のものを使用できます。
while performTask1 &&
performTask2 &&
performTask3 &&
... &&
performTaskX
do
:
done
また見なさい: