我有一个 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。