读写串行设备无法在 Shell 脚本中工作

读写串行设备无法在 Shell 脚本中工作

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

相关内容