我目前想在终端中运行 cmd1 和 cmd2。我想将这些输出通过管道传输到可以接受多个输入的 cmd3。
我试过
cmd1 && cmd2 | cmd3 -i - -i -
但这并没有实现我想要做的事情
答案1
从字面上回答你的问题(“同时运行两个命令并通过管道传输到第三个命令”)
您需要使用 将至少一个 LHS 命令放入 shell 后台&
,然后对它们进行分组,以便可以重定向组合的标准输出,例如。
{ cmd1 & cmd2; } | cmd3 -i - -i -
请注意,&
不同于&&
(等待cmd1
退出,然后有条件的执行cmd2
)。
{ ... ; }
如果愿意,你可以用子 shell替换命令组( ... )
。由于 shell 只有一个标准输出和一个标准输入流,因此这将合并cmd1
和cmd2
回答你真正想要的
要将两个独立命令的输出重定向为 bash 中的两个独立输入流,可以使用流程替代:
cmd3 -i <(cmd1) -i <(cmd2)