我需要运行cmd1
。 当且仅当从STDOUT中缺lessPATTERN时,我也需要运行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