- ベストアンサー
Kシェルのreadコマンドについての質問。
Kシェルのreadコマンドについての質問。 簡単なサンプルですが、以下のように動作させたいのですが、 readコマンドが無視(動作しない)されております。 while read line do echo $line read ans <--- 実行しても入力を求められない状況です。 echo $ans done < ./xxx 何かご存知でしたら、ご教授下さい。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
入力リダイレクトやパイプ入力で、標準入力が端末でなくなっているから、readを実行しても、標準入力から読むだけで、端末からは読まない。 というのが問題点ということですよね。 exec 3<&0 # 3番に標準入力(この時点では端末)をコピー while read line #標準入力(リダイレクトされているのでファイルxxx)から読む do echo $line read ans <&3 # 3番つまり端末から入力 echo $ans done < xxx
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
いや, パイプでも同じだってば.... 入力リダイレクトもパイプも「標準入力を切り替える」という点では同じ.
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
リダイレクトしてるからだったりして.
質問者
補足
早速の回答有難うございます。 以下のようにリダイレクトを使用しなくても 同じ結果になってしまいます。 cat ./aaa | while read line do echo $line read ans echo $ans done 尚、処理的にはbreakコマンドを使用して、loopを抜ければ回避はできるのですが…
お礼
回答していただき、有難うございます。 上記内容にて、実行させて頂いたところ、readコマンドが使用できるようになりました。 (3番に標準入力では、エラーとなり、1番、2番に標準入力ではOKでした。) 以上、親切に回答していただき有難うございました。