同时运行两个命令并通过管道传输到第三个命令

同时运行两个命令并通过管道传输到第三个命令

我目前想在终端中运行 cmd1 和 cmd2。我想将这些输出通过管道传输到可以接受多个输入的 cmd3。

我试过

cmd1 && cmd2 | cmd3 -i - -i -

但这并没有实现我想要做的事情

答案1

从字面上回答你的问题(“同时运行两个命令并通过管道传输到第三个命令”

您需要使用 将至少一个 LHS 命令放入 shell 后台&,然后对它们进行分组,以便可以重定向组合的标准输出,例如。

{ cmd1 & cmd2; } | cmd3 -i - -i -

请注意,&不同于&&(等待cmd1退出,然后有条件的执行cmd2)。

{ ... ; }如果愿意,你可以用子 shell替换命令组( ... )。由于 shell 只有一个标准输出和一个标准输入流,因此这将合并cmd1cmd2


回答你真正想要的

要将两个独立命令的输出重定向为 bash 中的两个独立输入流,可以使用流程替代

cmd3 -i <(cmd1) -i <(cmd2)

相关内容