bash:在语法上交换两个命令,但保持相同的执行顺序

bash:在语法上交换两个命令,但保持相同的执行顺序

考虑命令链:

cmd1 | cmd1 | cmd2

问题:如何在语法上交换cmd1and cmd2(以便cmd1将其放置在 之后cmd2,链的末尾),但保持原来的执行顺序(以便cmd1在 之前执行cmd2)?

答案1

cmd1 | cmd1 | cmd2

可以替换为:

cmd1 | cmd2 < <(cmd1)

<(cmd1)将 的输出更改cmd1为文件描述符,并以类似管道的方式<将其输入。cmd2

您不能简单地更改保留管道运算符 ( |) 的命令顺序,因为它会链接命令的输入和输出,并且更改命令的顺序会更改整个命令的含义。

相关内容