2013-01-09 70 views
4

(在bash中)是否可以觀察命令行程序的輸出並在發生特定字符串時標記?觀察字符串命令行

基本上我的問題是,我們有大量的生成腳本,產生輸出山控制檯。我想看控制檯說'錯誤'一詞,然後以某種方式提醒我。

然後我知道去看看其餘的過程/取消它。

回答

5

試試這樣的命令行:

<YOUR_BUILD_CMD> | grep ERROR 

它會打印出唯一的錯誤時<YOUR_BUILD_CMD>輸出。 |pipe運營商,這裏是手冊grep命令。

+1

+1簡潔明瞭的解決方案。但是這不會產生任何輸出。因爲你在ERRROR中有一個錯誤。 :D – Kent

+1

ahh thanx的警告:) – linski

5

您可以使用grep作爲字符串,但您需要存儲make的原始輸出,這可以使用tee完成。一旦發生錯誤,使用mplayer播放聲音文件的示例:

make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav 
0

我會通過while循環來檢查每行輸出。例如

cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done 

將其分解爲「& |」將stderr和stdout重定向到while循環,每次讀取1行輸入並將其放入行變量中。然後一個簡單的正則表達式比較尋找一個錯誤字符串,你可以突出顯示該行或將它記錄在你喜歡的任何地方。如果它與錯誤不匹配,它只會正常打印輸出。