他のプログラミング言語ではあまり見ないが、シェルスクリプトにはuntilという構文がある。
これは制御文の一種で、そこまで頻繁に使われるものではない。とはいえ、文法として用意されているので、紹介しておこう。
シェルスクリプトのuntil
「until」とは繰り返し「制御文」の一つだ。
until文は条件が「真」になるまで繰り返しが実行される。つまり条件が「偽」の場合実行される。whileの条件逆転版である。「条件が逆」という以外使い方は全く同様だ。
実際のところシェルスクリプトでは、あまりみかけない。実際これがなければ書けない処理というものもないだろう。知っておいて損はないくらいに考えてほしい。
untilの書式
untilの書式は次のようになる
until [ 条件 ] (testコマンドを使わなくても、結果「返り値が0以外」となれば実行される。)
do
処理...
done
条件の結果の判定が0以外のとき繰り返しが実行される。
サンプルプログラム
それでは実際に、サンプルプログラムを見ていこう。
vi until-ex1.sh
1 2 3 4 5 6 7 8 9 10 11 |
#!/usr/bin/bash declare -i COUNTER declare -i TMP_NUM COUNTER=1 read -p 何回繰り返しますか?: TMP_NUM #COUNTERがTMP_NUMより大きくないあいだ繰り返しが発生する。whileの場合 -lt で同じことができる。 until [ "$COUNTER" -gt "$TMP_NUM" ] do echo "$COUNTER"回目の繰り返しです。 let COUNTER++ done |
実行結果
$ ./until-ex1.sh
1 2 3 4 5 6 |
何回繰り返しますか?:5 1回目の繰り返しです。 2回目の繰り返しです。 3回目の繰り返しです。 4回目の繰り返しです。 5回目の繰り返しです。 |
その他応用もwhileとほぼ同じ事柄が通用する。しかしuntilは繰り返しの条件が「偽」でなければならないことに気を付けよう。
まとめ
このページではシェルスクリプトのuntilについてお伝えをした。
whileを使う方が一般的だが、こういった文法もあると知っておくと、登場した時に違和感なく受け入れられるだろう。
>シェルスクリプトのuntile
シェルスクリプトのuntil
eが余計ですよ
ご愛読いただきありががとうございます。
また、ご指摘いただきありががとうございます。
こちら、修正いたしました。
引き続き、ご愛読のほど、よろしくお願いいたします。
$ ./until-ex1.sh にて、
5回繰り返すはずが6回繰り返しています。
ご指摘いただきありがとうございます。
1~5までの繰り返しになりますね。
引き続き、ご愛読のほど、よろしくお願いいたします。