条件式が成立している間 (条件式の終了ステータスが0の場合)、
ループ処理を繰り返す。CASEと組み合わせてユーザ向けの本格的なアプリケーションプログラムを作成することが可能。ループを抜けるには break を用いても良い。詳しくは制御構造 break を参照。
■基本的な書式
条件付きループ処理1
while [ 条件式 ]
do
ループ処理
done
|
■サンプルスクリプト
変数cntに0を代入して初期化した後、ループ処理に入る。cntが5未満(less than)の間は条件が成立しているので、ループが走る。cntが5になったら条件式が不成立となるのでループを抜けてexit。
※インクリメント処理
C、Javaなど他の言語と違い、
古いUnixシェルではインクリメントやデクリメントの簡略表記( i = i + 1 を i++ と表記する)が使えない。変数 int の値に1を足す場合は int++ や int = int + 1の変わりに int=`expr ${int} + 1` と表記する。
#!/bin/sh
cnt=0
while [ ${cnt} -lt 5 ]
do
echo ${cnt}
cnt=`expr ${cnt} + 1`
done
|
実行結果
条件式が成立するまでの間 (条件式の終了ステータスが0以外の場合)、ループ処理を繰り返す。CASEと組み合わせてユーザ向けの本格的なアプリケーションプログラムを作成することが可能。ループを抜けるには break を用いても良い。詳しくは制御構造 break を参照。
■基本的な書式
条件付きループ処理2
until [ 条件式 ]
do
ループ処理
done
|
■サンプルスクリプト
変数cntに10を代入して初期化した後、ループ処理に入る。cntが5未満(less than)の間は条件が成立しないので、ループが走る。cntが4になったら条件式が成立するのでループを抜けてexit。
#!/bin/sh
cnt=10
until [ ${cnt} -lt 5 ]
do
echo ${cnt}
cnt=`expr ${cnt} - 1`
done |
実行結果
|