UNIX/Linuxの部屋 foreachコマンドの使い方


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド foreach 指定されたコマンドを一括して実行する。csh・tcsh の内部コマンド

指定されたファイルに対して、一連のコマンドを実行する。例えば複数のファイルの文字コードを変換したい場合、
% foreach i ( file1 file2 file3 )
foreach? nkf -e < $i > tmp
foreach? mv tmp $i
foreach? end
とすると、file1、file2、file3 が順にシェル変数 $i にセットされ、nkf と mv が実行される。
% foreach i ( *.txt /tmp/hoge/a?? )
などとメタキャラクタを使うこともできる。

DOS でいうところの
% copy *.txt *.txt.bak
を行うには
% foreach i ( *.txt )
foreach? cp $i $i.bak
foreach? end
とする。拡張子の一括変換は
% foreach i ( *.txt )
foreach? cp $i $i:s/.txt/.html/
foreach? end
とすればよい。

シェル変数への代入時は $ を付けてはいけないことに注意。つまり
% foreach $i ( ... )
はエラーになる。

foreach は、csh・tcsh の内部コマンドである。sh・bash の場合は for が用意されている。


頑張って書いたおすすめコンテンツ!
クラウドサービス徹底比較・徹底解説