Her*_*ine 2 grep make find stderr
我正在创建一个在 GitHub Actions 中执行的简单命令,该命令构建一个 Makefile 并在找到(匹配)时返回错误Error 1,在未找到时返回成功...
我似乎要么让它失败,即使没有任何问题,要么当有问题时不失败。
这是我的整个命令:
find . -name "Makefile" -exec sh -c 'cd "$(dirname "$0")" && make' {} \; | grep -zqvE "Error 1"
Run Code Online (Sandbox Code Playgroud)
exit 1如果它找到这样的输出,我希望它:
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [compile] Error 1
Run Code Online (Sandbox Code Playgroud)
或者0其他情况
! find ...as in the question... | grep -qF 'Error 1'
Run Code Online (Sandbox Code Playgroud)
初始!导致管道的退出状态被否定。管道的退出状态是命令的退出状态,如果在命令的输出中找到grep该字符串,则该退出状态为零。Error 1find
因此,如果Error 1在输出中找到,grep则以零退出状态退出,并将!其反转为非零值。
请注意,make可能会将诊断消息写入其标准错误流,在这种情况下,您必须使用以下命令重定向输出2>&1:
! find ...as in the question... 2>&1 | grep -qF 'Error 1'
Run Code Online (Sandbox Code Playgroud)
另请注意,grep一旦找到匹配项就会终止,find一旦尝试写入死管道,就会由于接收到 SIGPIPE 信号而终止。
您尝试使用grepwith -v。您可以将其视为-v问题“是否有与此模式不匹配的行?”。在这种情况下,无论是否发生,都会出现不匹配的行。Error 1Error 1
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |