我有一个看似相当简单的问题,但我找不到答案
我正在研究验证文件的travis脚本
我正在使用第三方软件,因此我对开发没有影响
问题:
您可能知道travis脚本需要非零退出代码才能使构建失败。不幸的是,我使用的软件只在stdout输出错误信息,但仍然存在代码0。
我的想法是使用grep。
目前我正在使用此命令:
! echo "SomeInput" | grep -Pzo "\A[^\x{0000}]*error message[^\x{0000}]*\Z"
如果打印错误消息,则返回非零退出代码并打印错误消息
您可能已经注意到,当没有错误显示时,不会显示输出。如果我们想要检查特定变化是否引入警告,这是不好的。然后也不会显示。
有什么想法吗?
答案 0 :(得分:1)
如果我理解正确,您希望通过grep
检测输出中的某些模式,和,同时您还希望查看整个输出。棘手的部分是grep
本身会消耗输出。
我不知道这是一个简单明智的解决方案。您需要消耗两次输出。一旦打印出来,再一次检查错误。
一种解决方案是先将输出保存到文件中,然后对其进行处理。例如:
some_command 2>&1 | tee out.log
! grep -Pzo "\A[^\x{0000}]*error message[^\x{0000}]*\Z" out.log