如何显示输出命令并将其传递到下一个命令?

如何显示输出命令并将其传递到下一个命令?

我想显示输出(STDOUT)并通过管道传输到下一个命令。我知道“tee”显示结果并写入文件,但为了写入文件,我想通过管道传输到另一个命令。

例子 :

$ command1 --option1 --option2 | MAGICCOMMAND | jq -e '.returnCode'

我会得到“command1 --option1 --option2”和“jq -e ...”的输出

答案1

bashshell 中,您可以使用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函数将其输入写入标准错误并将其传递到下一个过滤器。但是,它会格式化对象(压缩,不突出显示),因此这可能是也可能不是您想要的。

相关内容