tldp列出了进程替换的两种语法。
>(command_list)
和<(command_list)
如果有的话,有什么区别?
答案1
是的,有显着差异。看http://www.gnu.org/software/bash/manual/bashref.html#Process-Substitution
支持命名管道 (FIFO) 或 /dev/fd 命名打开文件方法的系统支持进程替换。它采取以下形式
<(列表)
或者
>(列表)
过程列表运行时其输入或输出连接到 FIFO 或 /dev/fd 中的某个文件。该文件的名称作为扩展结果作为参数传递给当前命令。如果 >(列表) 形式被使用,写入文件将为列表。如果 <(列表) 形式时,应读取作为参数传递的文件以获得以下输出列表。请注意,< 或 > 与左括号之间不能出现空格,否则该构造将被解释为重定向。
示例:comm
要求对输入文件进行排序:
comm <(sort file1) <(sort file2)
的使用>(cmd)
频率较低。我通常只使用它来tee
将一些输出发送到各种管道
seq 10 | tee >(rev > out1) >(tac > out2) >(shuf > out3)