2. たくさんあるデータを一気にREFORMATしたい

2、3個のデータならひとつずつREFORMATしてもたいした手間ではありませんが、 20、30となるとさすがに馬鹿々々しくなります。 このような同じ処理の繰り返しにはCシェルの機能である foreachを利用しましょう。

REFORMATしようとするデータファイルにはすべて ".seq"というsuffixが付いているとします (a.seqb.seqなど)。

% foreach i ( *.seq )
foreach? reformat $i
foreach? end
%
では説明です:
foreach i ( *.seq )
まず最初に、処理対象となるファイルを括弧内に指定します。 上の例ではワイルドカード(*)を使って、 ファイル名の最後に".seq"の付く すべてのファイルを指定しています。 ここで指定されたファイル名は順次 "i"に代入され、 以後"$i"で参照できます。 "i"の代りに "file"、 "target"など、 もっとわかりやすい記号を使ってもかまいません。 その場合にはそれぞれ"$file"、 "$target"で参照することになります。
reformat $i
foreachコマンドを入力すると (設定にもよりますが)プロンプトが "%"から "foreach?"に変ります。 ここからが実際の処理内容です。 上で指定したファイル名がひとつずつ "$i"に代入され、 REFORMATコマンドが実行されます。
end
繰り返し処理の終わりを示します。 これまでの入力に間違いがないか確認しましょう。
foreachコマンドでは endが入力されてはじめて処理が実行されます。 途中で間違いに気付いた時はCTRL+Cで中止できます。
Last modified: Wed Jan 7 22:31:16 1998