bash
以下は、リモートシステムでsshコマンドを実行しようとするUntilループスクリプトです。
n=0
until [ ${n} -ge 5 ]
do
ssh -oStrictHostKeyChecking=no root@test "mkdir -p /test_dir" && break
n=$(($n+1))
sleep 5
done
ループが成功せずに終了したら、終了1を実行したいと思います。
私はこの解決策を見つけました:
n=0
until [ ${n} -ge 5 ]
do
ssh -oStrictHostKeyChecking=no root@test "mkdir -p /test_dir" && exit 0
n=$(($n+1))
sleep 5
done
exit 1
正しい方法ですか?
ベストアンサー1
これは一つの方法です。
別の方法は次のとおりです。
until [ "$n" -ge 5 ] && exit 1; do
... && break
done
echo OK
exit 0
または:
while [ "$n" -lt 5 ] || exit; do
... && break
done
ssh
ここでは、成功するまでコマンドを繰り返し、何度も試した後に停止したいようですが、次のようになります。
n=5
until
ssh -oStrictHostKeyChecking=no root@test "mkdir -p /test_dir"
do
n=$((n - 1))
if [ "$n" -eq 0 ]; then
echo >&2 giving up
exit 1
fi
done
echo OK
exit 0
もっと理解できるでしょう。