输出输入,如果它不包含特定的字符串

时间:2017-06-04 10:57:54

标签: bash

我有一个看似相当简单的问题,但我找不到答案 我正在研究验证文件的travis脚本 我正在使用第三方软件,因此我对开发没有影响 问题:
您可能知道travis脚本需要非零退出代码才能使构建失败。不幸的是,我使用的软件只在stdout输出错误信息,但仍然存在代码0。 我的想法是使用grep。
目前我正在使用此命令:
! echo "SomeInput" | grep -Pzo "\A[^\x{0000}]*error message[^\x{0000}]*\Z"
如果打印错误消息,则返回非零退出代码并打印错误消息 您可能已经注意到,当没有错误显示时,不会显示输出。如果我们想要检查特定变化是否引入警告,这是不好的。然后也不会显示。
有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望通过grep检测输出中的某些模式,,同时您还希望查看整个输出。棘手的部分是grep本身会消耗输出。

我不知道这是一个简单明智的解决方案。您需要消耗两次输出。一旦打印出来,再一次检查错误。

一种解决方案是先将输出保存到文件中,然后对其进行处理。例如:

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