2016-08-22 45 views
0

我有一個交互式程序,cmd,我從批處理腳本運行。我插入輸入爲:終止批量交互式程序

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

這個程序cmd是第三部分的軟件,我不打算修改。

我需要在此字符串的末尾添加一些內容才能終止程序。事實是,我還沒有找到完整的方法來關閉這個程序,到目前爲止我已經用Control+C關閉它。我怎樣才能將它插入到輸入字符串的末尾?

+1

您知道[tag:batch-file]與Windows有關嗎?請重新考慮你申請的標籤...... – aschipfl

+0

「昨天的玫瑰以它的名字持久,我們持有空名。」 (cit)不,我不知道,我認爲它是shell腳本的同義詞 – simona

+1

也許你的意思是[標籤:bash]?檢查出相關的[標籤信息](http://stackoverflow.com/tags/bash/info)... – aschipfl

回答

0

假設這確實是在Linux上的bash,我覺得有以下應該做你想要什麼:

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

%的bash hackers wiki,在$''字符串,轉義序列展開,\cD是控制-d ,或文件結尾。正如評論者所說,你不應該需要明確的控制-D來執行一個行爲良好的程序。 cmd究竟是什麼?也許它以奇特的方式操縱終端。如果是這樣,另一種選擇可能是使用kill手動將SIGINTSIGHUP發送給過程。類似於:

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