• ベストアンサー

Kシェルのreadコマンドについての質問。

Kシェルのreadコマンドについての質問。 簡単なサンプルですが、以下のように動作させたいのですが、 readコマンドが無視(動作しない)されております。 while read line do echo $line read ans  <--- 実行しても入力を求められない状況です。 echo $ans done < ./xxx 何かご存知でしたら、ご教授下さい。 宜しくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

入力リダイレクトやパイプ入力で、標準入力が端末でなくなっているから、readを実行しても、標準入力から読むだけで、端末からは読まない。 というのが問題点ということですよね。 exec 3<&0 # 3番に標準入力(この時点では端末)をコピー while read line #標準入力(リダイレクトされているのでファイルxxx)から読む do echo $line read ans <&3 # 3番つまり端末から入力 echo $ans done < xxx

zuraoyaji
質問者

お礼

回答していただき、有難うございます。 上記内容にて、実行させて頂いたところ、readコマンドが使用できるようになりました。 (3番に標準入力では、エラーとなり、1番、2番に標準入力ではOKでした。) 以上、親切に回答していただき有難うございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

いや, パイプでも同じだってば.... 入力リダイレクトもパイプも「標準入力を切り替える」という点では同じ.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

リダイレクトしてるからだったりして.

zuraoyaji
質問者

補足

早速の回答有難うございます。 以下のようにリダイレクトを使用しなくても 同じ結果になってしまいます。 cat ./aaa | while read line do echo $line read ans echo $ans done 尚、処理的にはbreakコマンドを使用して、loopを抜ければ回避はできるのですが…

関連するQ&A