我想显示输出(STDOUT)并通过管道传输到下一个命令。我知道“tee”显示结果并写入文件,但为了写入文件,我想通过管道传输到另一个命令。
例子 :
$ command1 --option1 --option2 | MAGICCOMMAND | jq -e '.returnCode'
我会得到“command1 --option1 --option2”和“jq -e ...”的输出
答案1
在bash
shell 中,您可以使用tee
如下的进程替换:
command1 --option1 --option2 | tee >( jq -e '.returnCode' )
command1
这会将to的输出写入tee
,这会将其复制到标准输出以及 的标准输入jq
。
你也可以这样做
command1 --option1 --option2 | tee /dev/stderr | jq -e '.returnCode'
这会将输出command1
放到标准错误流,同时将其重复输出传输到jq
.这取决于您想要实现的目标。
答案2
| tee /dev/tty |
会将标准输入写入控制台(在大多数系统上),同时仍将其作为标准输出传递给下一个命令。
有时您可能/dev/stderr
更喜欢写入标准错误。具体对于 jq 来说,这可能就足够了:
| jq 'stderr | ...'
这stderr/0
函数将其输入写入标准错误并将其传递到下一个过滤器。但是,它会格式化对象(压缩,不突出显示),因此这可能是也可能不是您想要的。