发送命令以在Shell文件中打开进程

时间:2016-05-25 04:07:20

标签: bash shell

在bash中如何向刚刚开始的正在运行的进程发出命令?

例如;

# Start Bluez gatttool then Connect to bluetooth device 
gatttool -b $MAC -I
connect # send 'connect' to the gatttool process?

目前我的shell脚本无法访问connect行,因为gatttool进程正在运行。

2 个答案:

答案 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,如果你需要在发送一些东西之前对命令的输出采取行动。