![读写串行设备无法在 Shell 脚本中工作](https://linux22.com/image/158001/%E8%AF%BB%E5%86%99%E4%B8%B2%E8%A1%8C%E8%AE%BE%E5%A4%87%E6%97%A0%E6%B3%95%E5%9C%A8%20Shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E5%B7%A5%E4%BD%9C.png)
我有一个 USB 串行设备连接到我的 Linux VM (Ubuntu 18.04LTS)。它接受某种格式的字节流并返回一些内容。为了从设备读取数据,我编写了以下脚本:
#!/bin/sh
DATA="$1"; shift
stty -F /dev/ttyUSB0 115200 raw -echo
cat /dev/ttyUSB0 > /tmp/ttyDump.dat &
PID=$!
sleep 1s
echo -ne "$DATA" > /dev/ttyUSB0
sleep 1s
kill $PID
hexdump -ve '1/1 "%.2x"' /tmp/ttyDump.dat
如果我逐行执行,我可以从 ttyDump.dat 中的设备获得回复。但是,如果我运行该脚本,则 ttyDump.dat 为空。
我也尝试过FD:
exec 3</dev/ttyUSB0
cat <&3 >/tmp/ttyDump.dat&
但结果相同。
有什么线索吗?
谢谢!
答案1
好吧,我不知道为什么,但是当我更改为使用 bash shell 后,该脚本就可以工作了。默认 shell 是 dash。