• ベストアンサー

Cシェルでのファイルからの入力について

あるファイルが最終行になるまでに繰り返し実行するシェルを作りたいです。 とりあえずファイル名を1行ごとに5行程度入れてあるファイル「filemei」を作成しました。 そのファイルからファイル名を順番に取り出し、lsをするものを作ってみたのですが、うまくいきません。 とりあえず、繰り返しにはwhileやforeach、ファイルの読み込みにはawkを使ってみたのですが... どなたか分かるかたがいれば教えて下さい。 無知なので、質問自体が訳が分からない場合があると思いますが、ご勘弁願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

とりあえず、 set a = $< で、標準入力からの入力が一行、変数aに入ります。 例えば入力が abcde 12345 であれば $a = ( abcde 12345 ) となります。 abcde, 12345 はそれぞれ $a[1], $a[2] で参照できます。 ですから、  while ( 条件 )   set line = $<   $line を処理  end のようにすれば、標準入力からの入力を一行ずつ処理できます。 これを例えばcommandというスクリプトにして command < file のようにすれば、指定したファイルからの入力を一行ずつ処理できます。

tack15
質問者

お礼

大変詳しい回答どうもありがとうございました。 勉強になりましたm(..)m

その他の回答 (2)

  • seian
  • ベストアンサー率50% (16/32)
回答No.3

失礼致しました。Cシェルと書いてありましたね。 Cシェルはあまり使わないもので・・・。 以下のようにすれば良いようですよ。 #!/bin/csh foreach i (`cat filemei`) ls $i end

tack15
質問者

お礼

すごくシンプルな回答ありがとうございます。 まさしくこの方式で作成したいと思います。 助かりました。

  • seian
  • ベストアンサー率50% (16/32)
回答No.2

sh で書けばこんな所? #!/bin/sh for i in `cat filemei` do ls $i done このシェルスクリプトをtest.shと名前を付けて保存したならば、 chmod +x test.sh として実行権を与えておけば、 test.sh と入力しただけで実行できます。 的外れ??

関連するQ&A