我有一个交互式程序cmd
,我从批处理脚本运行。我将输入插入:
cmd < $"yes\n3\nn\n"
此程序cmd
是第三方软件,我不打算修改。
我需要在此字符串的末尾添加一些内容才能终止程序。事实是我还没有找到关闭这个程序的干净方法,到目前为止我一直用Control+C
关闭它。如何在输入字符串的末尾插入它?
答案 0 :(得分:0)
假设这确实是linux上的bash,我认为以下应该做你想做的事情:
cmd < $'yes\n3\nn\n\cD'
根据bash hackers wiki,在$''
字符串中,展开转义序列,\cD
是Control-D或文件结尾。正如评论者所说,对于一个表现良好的程序,你不应该需要明确的控制-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