簡體   English   中英

Bash在“讀取”命令上超時

[英]Bash timeout on 'read' command

我有一個非常簡單的bash腳本,該腳本將命令發送到串行並回讀您的值。 問題是,當我沒有收回價值時,它可能會卡住。

echo BC > /dev/ttyS1
read line < /dev/ttyS1
echo $line

我已經將cat命令與超時一起使用,但是不能對'read'使用相同的技術,因為如果我將進程發送到后台,則永遠不會在退出時獲得任何價值。 “貓”在大多數情況下都可以工作,但是我不確定這是否是最可靠的方法。

echo BC > /dev/ttyS1
cat /dev/ttyS1 &
    pid=$!
    sleep 0.1
    kill -9 $pid

從Bash參考手冊的4.2 Bash內置命令部分中:

讀取[-ers] [-a名稱] [-d delim] [-i文本] [-n nchars] [-N nchars] [-p提示] [-t超時] [-u fd] [名稱…]

...

-t超時

如果在超時秒內未讀取完整的輸入行,則會導致讀取超時並返回失敗。 超時可能是一個十進制數字,小數點后面是小數部分。 僅當read正在讀取來自端子,管道或其他特殊文件的輸入時,此選項才有效。 從常規文件讀取時無效。 如果timeout為0,則在指定的文件描述符上有輸入可用時read讀取成功,否則返回false。 如果超時,則退出狀態大於128。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM