Diff of UNIX/コマンド/シェル・シェル組み込み/foreach


TITLE:foreach - 繰り返し実行
#navi(UNIX/コマンド)

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

*foreach (csh・tcsh) [#i0f2ceb8]

例えば
 % 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 (sh・bash) [#i1662eeb]

bash の場合は for 文を使用します。例えば
 % for i in *.jpg
 > do
 > convert $i ${i%jpg}gif
 > done
のように使用します。いきなりコマンドを実行せずに
 > echo "convert $i ${i%jpg}gif"
のように試してからのほうが安全です。
自分はシェルスクリプトを書くときは bash で書くのでこちらのほうに
慣れてしまいました。結構便利です。

#navi(UNIX/コマンド,,footer,footer)
#navi(UNIX/コマンド,,footer)
xrea