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

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド 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 が用意されている。