nadermx Asked: 2020-01-24 19:39:39 +0800 CST2020-01-24 19:39:39 +0800 CST 2020-01-24 19:39:39 +0800 CST 同时运行两个命令并通过管道传输到第三个命令 772 我目前想在我的终端 cmd1 和 cmd2 中运行。我想将这些输出通过管道传输到 cmd3,它可以接受多个输入。 我试过了 cmd1 && cmd2 | cmd3 -i - -i - 但这并没有完成我想要做的事情 command-line 1 个回答 Voted Best Answer steeldriver 2020-01-24T19:48:06+08:002020-01-24T19:48:06+08:00 从字面上回答您的问题(“同时运行两个命令并通过管道传输到第三个命令”) 您需要使用 将至少一个 LHS 命令放入 shell 后台&,并将它们分组,以便可以将组合的标准输出重定向到 ex。 { cmd1 & cmd2; } | cmd3 -i - -i - 请注意,这&与&&(等待cmd1退出,然后有条件地执行cmd2)不同。 如果您愿意,可以将命令组替换{ ... ; }为子 shell ( ... )。由于shell只有一个标准输出和一个标准输入流,这将合并cmd1和cmd2 回答你真正想要的 要将两个单独命令的输出重定向为 bash 中的两个单独输入流,您可以使用进程替换: cmd3 -i <(cmd1) -i <(cmd2)
从字面上回答您的问题(“同时运行两个命令并通过管道传输到第三个命令”)
您需要使用 将至少一个 LHS 命令放入 shell 后台
&
,并将它们分组,以便可以将组合的标准输出重定向到 ex。请注意,这
&
与&&
(等待cmd1
退出,然后有条件地执行cmd2
)不同。如果您愿意,可以将命令组替换
{ ... ; }
为子 shell( ... )
。由于shell只有一个标准输出和一个标准输入流,这将合并cmd1
和cmd2
回答你真正想要的
要将两个单独命令的输出重定向为 bash 中的两个单独输入流,您可以使用进程替换: