加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 如何通过退出代码发出模式的信号,而不改变STDOUT

发布时间:2020-12-15 18:32:35 所属栏目:安全 来源:网络整理
导读:我需要运行cmd1.当且仅当其STDOUT中缺少PATTERN时,我还需要运行cmd2: cmd1 | grep "$PATTERN" || cmd2 但是我希望看到cmd1的所有输出,而不仅仅是匹配PATTERN的行. 我知道我可以这样做: OUTPUT=`cmd1`echo "$OUTPUT"echo "$OUTPUT" | grep -q "$PATTERN" ||
我需要运行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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读