web-dev-qa-db-ja.com

シェルスクリプトで読み取り/書き込みシリアルデバイスが機能しない

Linuxに接続されたUSBシリアルデバイスがあります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
bubblesnake

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

1
bubblesnake