我需要一个bash脚本来读取串行端口(RS232转USB适配器 - 端口:/dev/ttyUSB0)的数据流。数据应该逐行存储在文件中,直到出现特定的输入(例如“eof”)。我可以给串行端口任何外部输入。目前我使用cat来读取数据,这个方法很好用。
cat /dev/ttyUSB0 -> file.txt
问题在于我需要通过输入ctrl+C来完成命令,但我不知道数据流何时结束,而且ttyUSB0文件没有生成EOF。我尝试过自己实现,但没有找到方便的解决方案。 以下命令可以使用,但我不知道如何将其用于我的问题("world"会创建一个"command not found"错误):
#!/bin/bash
cat > file.txt << EOF
hello
EOF
world
以下代码可以解决我的问题,但是它需要太多时间(数据流包含大约200万行):
#!/bin/bash
while read line; do
if [ "$line" != "EOF" ]; then
echo "$line" >> file.txt
else
break
fi
done < /dev/ttyUSB0
是否有方便的解决方法来解决我的问题?