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.com > /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.com > /dev/null ); do echo ‘WEB SERVER IS DEAD !!’; sleep 1; done $ |
結論
until に関しては、一見すると正しいか間違っているのかが分からなくなる事がある。
バグの原因になりやすいので使わない方が吉。
もしも「偽(False)」を使いたいのであれば、コマンドの前に「!」を書いてスペースを空ける方が無難である。
例: ! ping -c 1 -t 1 www.magic-object.com


