(在bash中)是否可以觀察命令行程序的輸出並在發生特定字符串時標記?觀察字符串命令行
基本上我的問題是,我們有大量的生成腳本,產生輸出山控制檯。我想看控制檯說'錯誤'一詞,然後以某種方式提醒我。
然後我知道去看看其餘的過程/取消它。
(在bash中)是否可以觀察命令行程序的輸出並在發生特定字符串時標記?觀察字符串命令行
基本上我的問題是,我們有大量的生成腳本,產生輸出山控制檯。我想看控制檯說'錯誤'一詞,然後以某種方式提醒我。
然後我知道去看看其餘的過程/取消它。
您可以使用grep
作爲字符串,但您需要存儲make的原始輸出,這可以使用tee
完成。一旦發生錯誤,使用mplayer播放聲音文件的示例:
make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav
我會通過while循環來檢查每行輸出。例如
cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done
將其分解爲「& |」將stderr和stdout重定向到while循環,每次讀取1行輸入並將其放入行變量中。然後一個簡單的正則表達式比較尋找一個錯誤字符串,你可以突出顯示該行或將它記錄在你喜歡的任何地方。如果它與錯誤不匹配,它只會正常打印輸出。
+1簡潔明瞭的解決方案。但是這不會產生任何輸出。因爲你在ERRROR中有一個錯誤。 :D – Kent
ahh thanx的警告:) – linski