Tôi cần tập lệnh bash để đọc luồng dữ liệu từ Cổng Nối tiếp (RS232 to USB adapter - Cổng:/dev/ttyUSB0). Dữ liệu phải được lưu trữ từng dòng trong một tệp cho đến khi một đầu vào cụ thể (ví dụ "eof") xuất hiện. Tôi có thể cung cấp bất kỳ đầu vào bên ngoài vào Cổng nối tiếp. Cho đến bây giờ tôi sử dụng con mèo để đọc dữ liệu, hoạt động tốt.Tập lệnh Bash: lưu luồng từ Cổng Nối tiếp (/ dev/ttyUSB0) để gửi cho đến khi một đầu vào cụ thể (ví dụ eof) xuất hiện
cat /dev/ttyUSB0 -> file.txt
Vấn đề là, mà tôi cần để kết thúc lệnh bản thân mình bằng cách nhập CNTR + C, nhưng tôi không biết chính xác khi dòng dữ liệu kết thúc và file ttyUSB0 không gerenate một EOF. Tôi đã cố gắng thực hiện điều này bản thân mình, nhưng không tìm thấy một giải pháp thuận tiện. Các công trình lệnh sau đây, nhưng tôi không biết làm thế nào để sử dụng nó cho vấn đề của tôi ("thế giới" sẽ tạo ra một lỗi "Không tìm thấy lệnh"):
#!/bin/bash
cat > file.txt << EOF
hello
EOF
world
Các mã sau đây làm việc cho vấn đề của tôi, nhưng mất quá nhiều thời gian (luồng dữ liệu bao gồm ~ 2 triệu dòng):
#!/bin/bash
while read line; do
if [ "$line" != "EOF" ]; then
echo "$line" >> file.txt
else
break
fi
done < /dev/ttyUSB0
Có ai có khả năng thuận tiện cho sự cố của tôi không?
Làm việc hoàn hảo, cảm ơn rất nhiều !!! – user1822048