2016-08-22 2 views
0

バッチスクリプトから実行する対話型プログラムcmdがあります。私は変更するつもりはないことを、バッチから対話型プログラムを終了する

cmd < $"yes\n3\nn\n" 

このプログラムcmdは、第三部のソフトウェアである:私は入力を挿入します。

プログラムを終了するには、この文字列の最後に何かを追加する必要があります。実際には、私はまだこのプログラムを終了するためのきれいな方法を見つけていない、今まで私はControl+Cでそれを閉じているということです。これを入力文字列の最後にどのように挿入できますか? bash hackers wikiパー

cmd < $'yes\n3\nn\n\cD' 

は、$''文字列では、シーケンスが展開され脱出、そして\cDは、Control-Dである:これは、Linux上のbashは確かにあると仮定すると

+1

[タグ:バッチファイル]はWindows関連のものですか?あなたが適用したタグを再考してください... – aschipfl

+0

"昨日のバラはその名前に耐え、私たちは空の名前を保持しています。" (cit)いいえ、私はそれを知らなかった、私はそれがシェルスクリプトの同義語だと思った – simona

+1

あなたは[tag:bash]を意味するのでしょうか?関連する[タグ情報](http://stackoverflow.com/tags/bash/info)を参照してください... – aschipfl

答えて

0

、私は次のようにあなたが望む何をすべきだと思います、またはファイルの終わり。コメント者が述べたように、適切に動作するプログラムには明示的なcontrol-Dは必要ありません。実際にcmdとは何ですか?おそらく、それは派手な方法で端末を操作するでしょう。その場合は、killを使用して手動でSIGINTまたはSIGHUPをプロセスに送信することもできます。次のようなものがあります。

cmd < $'yes\n3\nn\n & 
CMD_PID=$! 
sleep 10 # or however long "cmd" usually takes 
kill -s SIGINT "$CMD_PID" # or SIGHUP or SIGQUIT instead of SIGINT 
関連する問題