• 締切済み

シェル 会話形式でエンターキーの動作は?

シェル内で、ENTERキーを押した時の動作をしたいと思います。 具体的には、もともと「telnetする、接続→ある値を入力する→ENTERを押す→入力した値に合わせたテキストが出力される→connection終了」という処理があり、 これを自動化して、出力されたテキストをファイルに保存するためのシェルを作りたいのです。 作ってみたところ、1点だけできないのがENTERキーを押す部分です。 シェルを実行すると、値の入力まで行われた状態で終わってしまいます。 そこで手動でENTERを押せば、正常に処理が終了します。 おそらく、会話形式でENTERを押した時の処理がうまくかけていないと思っています。 echo -e "\r\n"などいろいろ試したのですが・・・ echoではないのではないかと推測していますが、行き詰まりました。 どのようにしたらよいのかご教授ください。

みんなの回答

  • Quux
  • ベストアンサー率57% (16/28)
回答No.1

echo " " でいいんじゃないでしょうか。ちょっとやりたいことが正確には理解できていないかもしれませんが。 文法的にまちがって見えても、本当に改行してしまうところがミソです。

takola
質問者

お礼

自己解決しましたので、今後困った方がネット検索された場合を考慮して、ご報告します。 「会話形式でのエンターキーの動作」という質問の回答というより、 『「telnetする、接続→ある値を入力する→ENTERを押す→入力した値に合わせたテキストが出力される→connection終了」という処理があり、 これを自動化して、出力されたテキストをファイルに保存するためのシェルを作りたい』という質問の回答となります。 結果としては、 (echo '****';sleep 5;echo 'exit') | telnet 192.168.XXX.XXX という形でうまくいきました(****は、入力した値)。 ##ちなみに、出力された値をテキストに保存したい場合(lsした結果など)は、 ##(echo '****';sleep 5;echo 'exit') | telnet 192.168.XXX.XXX > 吐き出し先ファイル名 ##でできました。 エコーを前に書いてパイプで繋ぐという発想がなかったのですが、 おそらく、最初に****をエコーして、sleep 5をしている間にtelnet接続され、exitが実行されたタイミングで****+エンターキーと同じ動作が行われている様子です。 参考URLはこちらです。 http://his.luky.org/ML/linux-users.a/msg00827.html >Quuxさん、説明が抽象的でわかりづらく、すみませんでした。ありがとうございました!

takola
質問者

補足

回答ありがとうございます。 説明を抽象的にしてしまったために、わかりづらくすみません。 echo" " で、改行はできました。 ただ、改行しただけで、思ったとおりの動き(ENTERを押した時と同じような動き)はしませんでした。 すなわち、 echo -e "\r\n" の時と同じ動きです。 どうやら、改行コードを送り込むだけではだめみたいです。 せっかく回答いただいたのに、すみません。

関連するQ&A