我需要运行cmd1.当且仅当其STDOUT中缺少PATTERN时,我还需要运行cmd2:
cmd1 | grep "$PATTERN" || cmd2
但是我希望看到cmd1的所有输出,而不仅仅是匹配PATTERN的行.
我知道我可以这样做:
OUTPUT=`cmd1` echo "$OUTPUT" echo "$OUTPUT" | grep -q "$PATTERN" || cmd2
但这会将STDOUT与STDERR分开.而且我宁愿有一个方便的单行.所以我在grep中寻找一个选项,或者替代grep,说“不要过滤,只需设置退出代码”.
如何使用tee将输出发送到tty,如下所示:
cmd1 | tee /dev/tty | grep "$PATTERN" || cmd2
PATTERN匹配cmd1输出的示例:
% echo "cmd1 output" | tee /dev/tty | grep -q "output" || echo "nothing matches PATTERN" cmd1 output
PATTERN不匹配cmd1输出的示例:
% echo "cmd1 output" | tee /dev/tty | grep -q "outputttt" || echo "nothing matches PATTERN" cmd1 output nothing matches PATTERN
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。