シェル・プログラミング:8. for文

 シェルの for文は,繰り返し処理に使う値を明示します。

■for 文

     for 値 in 値1 値2 ...
     do
          処理
     done

値1 値2 ...」の部分には,$* (標準入力) や `command` (コマンドの標準出力) を代入することも可能。また *txt とすれば拡張子 .txt のファイルすべてに対し同じ処理ができます。

#
# 例 13
#
#!/bin/sh

echo '# Example 13'

echo $# inputed
echo '+------------+'

for i in $*
do
   echo $i
done

echo '+------------+'

for i in "$*"
do
   echo $i
done

echo '+------------+'

for i in "$@"
do
   echo $i
done
実行例)
% sh script a b c 'd e f'
# Example 13
+------------+
4 inputed
+------------+
a
b
c
d
e
f
+------------+
a b c d e f
+------------+
a
b
c
d e f
%

[ノート]引数は4つと読んでいるが,$* には6つ入っている。シェルはメタ文字を取り除き,スペースで区切りられた部分を分解し,それを $* に格納するのである。そこで,ダブル・クウォーテイションで $@ を囲めば,4つになる。ちなみに,$@ をダブル・クウォーテイションで囲まないと $* と同じ結果となる。また,a b c 'd e f' の間のスペースは幾つ入れても同じ結果となる。