- ベストアンサー
Cシェルでのファイルからの入力について
あるファイルが最終行になるまでに繰り返し実行するシェルを作りたいです。 とりあえずファイル名を1行ごとに5行程度入れてあるファイル「filemei」を作成しました。 そのファイルからファイル名を順番に取り出し、lsをするものを作ってみたのですが、うまくいきません。 とりあえず、繰り返しにはwhileやforeach、ファイルの読み込みにはawkを使ってみたのですが... どなたか分かるかたがいれば教えて下さい。 無知なので、質問自体が訳が分からない場合があると思いますが、ご勘弁願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、 set a = $< で、標準入力からの入力が一行、変数aに入ります。 例えば入力が abcde 12345 であれば $a = ( abcde 12345 ) となります。 abcde, 12345 はそれぞれ $a[1], $a[2] で参照できます。 ですから、 while ( 条件 ) set line = $< $line を処理 end のようにすれば、標準入力からの入力を一行ずつ処理できます。 これを例えばcommandというスクリプトにして command < file のようにすれば、指定したファイルからの入力を一行ずつ処理できます。
その他の回答 (2)
- seian
- ベストアンサー率50% (16/32)
失礼致しました。Cシェルと書いてありましたね。 Cシェルはあまり使わないもので・・・。 以下のようにすれば良いようですよ。 #!/bin/csh foreach i (`cat filemei`) ls $i end
お礼
すごくシンプルな回答ありがとうございます。 まさしくこの方式で作成したいと思います。 助かりました。
- seian
- ベストアンサー率50% (16/32)
sh で書けばこんな所? #!/bin/sh for i in `cat filemei` do ls $i done このシェルスクリプトをtest.shと名前を付けて保存したならば、 chmod +x test.sh として実行権を与えておけば、 test.sh と入力しただけで実行できます。 的外れ??
お礼
大変詳しい回答どうもありがとうございました。 勉強になりましたm(..)m