进程替换语法。前/右括号与后/左括号

Kev*_*ler 3 bash process-substitution

tldp列出了两种用于进程替换的语法。 >(command_list)<(command_list)

如果有的话,有什么区别?

gle*_*man 5

是的,有显着差异。请参阅http://www.gnu.org/software/bash/manual/bashref.html#Process-Substitution

在支持命名管道 (FIFO) 或命名打开文件的 /dev/fd 方法的系统上支持进程替换。它采用以下形式

<(列表

或者

>(列表)

进程列表运行时其输入或输出连接到 FIFO 或 /dev/fd 中的某个文件。该文件的名称作为扩展的结果作为参数传递给当前命令。如果使用 >( list ) 形式,写入文件将为list提供输入。如果使用 <( list ) 形式,则应读取作为参数传递的文件以获得list的输出。请注意,< 或 > 和左括号之间不能出现空格,否则该构造将被解释为重定向。

示例:comm需要对输入文件进行排序:

comm <(sort file1) <(sort file2)
Run Code Online (Sandbox Code Playgroud)

的使用>(cmd)频率较低。我通常只使用它tee来将一些输出发送到各种管道

seq 10 | tee >(rev > out1) >(tac > out2) >(shuf > out3)
Run Code Online (Sandbox Code Playgroud)