在bash中如何向刚刚开始的正在运行的进程发出命令?
例如;
# Start Bluez gatttool then Connect to bluetooth device
gatttool -b $MAC -I
connect # send 'connect' to the gatttool process?
目前我的shell脚本无法访问connect
行,因为gatttool
进程正在运行。
答案 0 :(得分:0)
如果您只是想发送字符串" connect \ n"在此过程中,您可以使用标准管道:
echo "connect" | gatttool -b $MAC -I
如果您想参与更复杂的对话"使用gatttool
流程,查看expect (1)
和chat (8)
工具,它允许您发送一系列字符串,并等待某些响应。
答案 1 :(得分:0)
如果您更喜欢略微“轻”的滚边方式,可以使用heredoc,例如:
gatttool -b $MAC -I <<EOF
connect
(...)
EOF
两个EOF标签之间包含的所有内容都将通过管道传输到命令的输入。我相信这不允许你在EOF标签之间与命令进行交互,所以,如前面的答案中所提到的,你可能需要考虑使用expect,如果你需要在发送一些东西之前对命令的输出采取行动。