私は5つのテストを実行し(各テストの前にしばらく待機し)、すべてのテストが失敗した場合に作業を実行する小さなkornシェルスクリプトを作成したいと思います。
私は同様のことを考えています:
for i in {1..5}
do
"doMyTest" #it fills a variables "status" (but can unfortunately fails)
if [ "$status" ]; then #if status is filled then we can leave the loop
break
fi
sleep 3 #else wait some time before doing another try
done
if [ -z "$status" ]; then
exit 1
fi
... then the rest of my program
私はどうすればより良い方法で行うことができますか知っていますか?ちょっと重複しているようですね…
答え1
set --
while [ "$(($#>5))" -eq "-${#status}" ]
do "test"; ${status:+":"} sleep 3
set '' "$@"
done
補足的にテストすると、単一のテストでより多くのタスクを実行できることがよくあります。
答え2
$status
次の操作を行うと、ダブルチェックを回避できます。
for i in {1..5}
do
"doMyTest" #it fills a variables "status" (but can unfortunately fails)
if [ -n "$status" ]; then #if status is filled then we can leave the loop
break
elif [ $i -eq 5 ]; then
exit 1 #all the tests failed, exiting
fi
sleep 3 #else wait some time before doing another try
done
答え3
私の答え:すべてのテストが失敗したときにのみ失敗を確認するにはどうすればよいですか? 1つのテストが成功したら、別のテストをスキップできます。
test1 || sleep 3 && \
test2 || sleep 3 && \
test3 || sleep 3 && \
test4 || sleep 3 && \
test5 || exit 1