Bash 阅读插座 /dev/rfcomm0

Bash reading socket /dev/rfcomm0

我正在处理通过我的树莓派的蓝牙插座从我的 android 应用程序获得的数据。

长话短说,我能够建立连接,发送数据(JSON 字符串)。当我 tail/cat 在位于 /dev/rfcomm0 的套接字中时,我可以读取数据但是当我把它放在脚本中以不断检查文件是否有新数据时我不明白如何自动停止读取套接字。我正在尝试将 3 写入 var input:

执行 3<>/dev/rfcomm0 3个

但我实际上需要将接收到的JSON字符串发送给另一个程序。所以我需要在每次 JSON 字符串到达​​时停止阅读并使用 JSON 字符串开始最后一个过程。

我知道这对于开始读取套接字是正常的,但我一直在寻找停止读取的方法。

你为什么要停止阅读?您似乎需要的是

while read input ; do
    do_something_with "$input"
done <&3

这样,shell继续读取,每一行都可以将字符串发送给另一个程序。

如果您的 other_program 读取标准输入,您可以考虑为此使用 fifo:

mkfifo fifootje
cat fifootje  | other_program &
while read input ; do
    echo "$input" >>fifootje
done <&3