직렬 장치 읽기 및 쓰기가 쉘 스크립트에서 작동하지 않습니다.

직렬 장치 읽기 및 쓰기가 쉘 스크립트에서 작동하지 않습니다.

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

한 줄씩 실행하면 ttyDump.dat의 장치에서 응답을 얻을 수 있습니다. 그러나 스크립트를 실행하면 ttyDump.dat가 비어 있습니다.

나는 또한 FD를 시도했습니다:

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

그러나 결과는 같습니다.

어떤 단서가 있나요?

감사해요!

답변1

글쎄, 이유는 모르겠지만 bash 쉘을 사용하도록 변경했을 때 스크립트가 작동했습니다. 기본 쉘은 대시입니다.

관련 정보