我已經搜索了這個,並預計會發現數百個解決方案,但沒有找到!Bash實時閱讀標準輸出流
我想讀取STDOUT流並等待一個特定的字符串出現,而無需等待該過程完成。
我現在有,等待的過程中返回輸出之前完成:
RESP=$(execute some command 2>&1)
if $RESP contains something then do something;
如何我可以讀取的實時,而不是等待它完成流?
編輯
我嘗試以下的稻田,其用於測試使用ping命令的工作建議:
RESP=$(dhcpcd wlan0 -r 192.168.0.190 | grep claims -m1)
:
RESP=$(ping 192.168.0.1 | grep seq=5 -m1)
但是它不會與我想使用的dhcpcd命令工作
與ping測試不同,命令的輸出被髮送到控制檯而不是隱藏,並且即使它存在於ou中也不會檢測到「聲明」文本tput?
確定的dhcpcd的輸出去標準輸出?它可能通過stderr來到你的控制檯?在這種情況下,您應該將'2>&1' stderr-輸出重定向到stdout-output。 – urzeit