2016-08-22 72 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