bash プログラミング:while 文と until 文

今回は bash の while 文と until 文について解説する。


while 文

while 文の文法は次の通り。

while list-1; do list-2; done

実例を次に示す。(秒が59秒未満の時に1秒ずつ時間を表示)

$ while (( 59 > $( date +%S ) )); do date +%I:%M:%S; sleep 1; done
11:11:45
11:11:46
11:11:47
11:11:48
11:11:49
11:11:50
11:11:51
11:11:52
11:11:53
11:11:54
11:11:55
11:11:56
11:11:57
11:11:58
$

サーバが生きている場合は「WEB SERVER IS ALIVE.」を1秒ずつ表示。

$ while ( ping -c 1 www.magic-object.mydns.jp > /dev/null ); do echo “WEB SERVER IS ALIVE.”; sleep 1; done
WEB SERVER IS ALIVE.
WEB SERVER IS ALIVE.
WEB SERVER IS ALIVE.
WEB SERVER IS ALIVE.
WEB SERVER IS ALIVE.
WEB SERVER IS ALIVE.
WEB SERVER IS ALIVE.

until 文

until 文の文法は次の通り。

until list-1; do list-2; done

注意! : until 文は条件が「偽(False)」の時に実行される。

サーバが死んでいる場合は「WEB SERVER IS DEAD !!」を1秒ずつ表示。

$ until ( ping -c 1 -t 1 www.magic-object.mydns.jp > /dev/null ); do echo ‘WEB SERVER IS DEAD !!’; sleep 1; done
$

結論

until に関しては、一見すると正しいか間違っているのかが分からなくなる事がある。

バグの原因になりやすいので使わない方が吉。

もしも「偽(False)」を使いたいのであれば、コマンドの前に「!」を書いてスペースを空ける方が無難である。
例: ! ping -c 1 -t 1 www.magic-object.mydns.jp

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です