2017-06-04 77 views
1

我有什麼似乎是一個相當簡單的問題,但我找不到答案。
我正在驗證文件的travis腳本。
我正在使用第三方軟件,因此我對開發沒有影響。
問題:
正如您所知,travis腳本要求非零退出代碼才能使構建失敗。不幸的是,我使用的軟件只在標準輸出中輸出錯誤消息,但仍然存在代碼0. 我的想法是使用grep。
當前我使用的命令:
! echo "SomeInput" | grep -Pzo "\A[^\x{0000}]*error message[^\x{0000}]*\Z"
如果錯誤消息被打印,它返回一個非零退出代碼並打印錯誤消息。
正如您可能已經注意到的,當沒有錯誤出現時,輸出不會顯示。如果我們想檢查一個特別的變化是否引入了警告,這是不好的。那麼它也不會被顯示。
任何想法?輸出輸入,如果它不包含特定的字符串

+0

'grep --invert-match [PATTERN]'/'grep -v [PATTERN]'? –

回答

1

如果我理解正確,您想通過grep檢測錯誤 - 在輸出中某些模式,同時您還希望看到整個輸出。棘手的部分是grep本身會消耗輸出。

我不是那裏有一個簡單的聰明的解決方案。你需要消耗兩次輸出。一次只打印出來,還有一次檢查錯誤。

一種解決方案是先將輸出保存到文件中,然後對其進行處理。例如:

some_command 2>&1 | tee out.log 
! grep -Pzo "\A[^\x{0000}]*error message[^\x{0000}]*\Z" out.log 
+0

@RoiEX你是對的,我完全錯過了這一點。我現在重寫了我的答案,我希望這會有所幫助。 – janos

+0

太棒了!我將它合併爲一個班輪,但你的想法完美無缺! – RoiEX

相關問題