2013/08/02
シェルスクリプトでループ
シェルスクリプトでループ処理をする場合、
最も多用するのは while だと思う。
良く見かけるのは次の様な書き方だろう。
:
while true
do
処理
if 条件
then
break
fi
done
:
勿論この書き方でも問題なく動作するが、
条件がコマンドの戻り値の場合は以下の方が簡潔に記述できる。
コマンドの戻り値が 0 (正常終了の場合) ループを続けたい場合。
:
while コマンド
do
処理
done
:
コマンドの戻り値が 0 以外(正常終了以外の場合) ループを続けるのであれば
while の替わりに until が利用できる。例えば再起動中のリモートサーバに ssh (1) 接続したい場合、 以下の方法で繰り返し接続を試行する事ができる。
until ssh -o 'ConnectTimeout 5' リモートサーバ
do
sleep 10
done
ssh (1) が成功するとリモートサーバから exit した時点で
until の条件が真になるのでループを抜ける事ができる。

