foreach - 繰り返し実行


指定されたコマンドを繰り返し実行することができます。cshtcsh の内部コマンドです。また、while というコマンドもあります。if や case などもあります。 sh, bash では for コマンドを使用します。

Table of Contents

foreach (cshtcsh) Edit

例えば

% foreach n ( *.c )

と実行すると、

foreach?

のように問い合わせてきます。例えば

foreach? echo $n
foreach? end

とすれば、 カレントディレクトリ以下の拡張子が .c のファイルすべてが表示されます。 (See also echo)

() の中で指定された文字列が一つづつ順番に n に代入されて end までに打ち込まれたコマンドを実行されます。 コマンドの行では n の内容を $n の様に $ をつけて参照します。 シェルの基本です。

% foreach n (*.c)
foreach? echo gcc -o $n:r.o $n
foreach? gcc -o $n:r.o $n
foreach? end

のようにすれば

gcc -o sample.o sample.c
gcc -o test.o test.c

のように繰り返し実行されます。:r などについては tcsh の技 のほうを参照してください。

for (shbash) Edit

bash の場合は for 文を使用します。例えば

% for i in *.jpg
> do
> convert $i ${i%jpg}gif
> done

のように使用します。いきなりコマンドを実行せずに

> echo "convert $i ${i%jpg}gif"

のように試してからのほうが安全です。 自分はシェルスクリプトを書くときは bash で書くのでこちらのほうに 慣れてしまいました。結構便利です。


xrea