シリアルデバイスの読み書きはシェルスクリプトでは機能しません。

シリアルデバイスの読み書きはシェルスクリプトでは機能しません。

Linux VM (Ubuntu 18.04LTS) に USB シリアルデバイスが接続されています。任意の形式のバイトストリームを受け入れ、何かを返します。デバイスからデータを読み取るために、次のスクリプトを作成しました。

#!/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

1行ずつ実行すると、ttyDump.datのデバイスから応答を取得できます。しかし、スクリプトを実行すると、ttyDump.datは空です。

私もFDを試しました:

exec 3</dev/ttyUSB0
cat <&3 >/tmp/ttyDump.dat&

しかし、結果は同じです。

どんな手がかりがありますか?

ありがとうございます!

答え1

まあ、理由はわかりませんが、bashシェルを使用するように変更したときにスクリプトが機能しました。デフォルトのシェルはダッシュです。

関連情報