考虑命令链:
cmd1 | cmd1 | cmd2
问题:如何在语法上交换cmd1
and cmd2
(以便cmd1
将其放置在 之后cmd2
,链的末尾),但保持原来的执行顺序(以便cmd1
在 之前执行cmd2
)?
答案1
cmd1 | cmd1 | cmd2
可以替换为:
cmd1 | cmd2 < <(cmd1)
<(cmd1)
将 的输出更改cmd1
为文件描述符,并以类似管道的方式<
将其输入。cmd2
您不能简单地更改保留管道运算符 ( |
) 的命令顺序,因为它会链接命令的输入和输出,并且更改命令的顺序会更改整个命令的含义。