この章では、for
, while
, そして util
によるルー
プについて述べます。
bash
の for
は、他の言語での使い方と若干異なります。基本的に
は、ある文字列内の単語をあたまから順に反復処理するものです。
while
は、制御式が真の間はコードを実行していて、偽になったとき
(あるいは実行コード内に break
が明示されている場合)にのみ停止します。
until
ループは、制御式が偽と評価されている間はコードが実行される
という点を除くと、while
ループとほぼ同じです。while
と
until
が似ていると思ったなら、それは正しい考えです。
#!/bin/bash
for i in $( ls ); do
echo item: $i
done
二行目で、変数 i
が宣言されています。これには、$( ls )
によっ
て出力される様々な値が(順番に)代入されていきます。
三行目は、必要であればもっと長くできます。すなわち、四行目の done
の前に複数の行が存在してもかまいません。
四行目の done
は、変数 $i
の値を使用していたコードがそこで
終了したことを示していています。したがって、$i
に新しい値を代入する
ことが可能です。
上記は、はほとんど意味がないスクリプトです。for
ループを使用するもっと
有益な方法は、以前の例題にあったように、ある種のファイルだけを選択的に処理す
る場合に使うことだと思います。
Fiesh さんから以下のような形式のループを付け加えたらどうかと言われました。
この for
ループは、C 言語や Perl の for
ループに類似した
使われかたをしています。
#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
上記のスクリプトは、(C, Pascal, Perl といった)有名な言語の for
の
制御構造を真似たものです。
#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done