我试图使用diff命令来比较目录列表,它在bash中工作正常:
diff <(cd alpha ; find . -type f) <(cd beta; find . -type f)
然而,在灰(没有其他外壳的嵌入式设备)上我得到了
-ash: syntax error: unexpected "("
阅读输入操作符<
或括号(
)
是否有任何区别?
答案 0 :(得分:3)
请勿将<( … )
中的尖括号与cat < file
等重定向中的尖括号混淆。在bash中,<( echo hi )
实际上是一个包含内容的文件&#34; hi&#34; (至少为了阅读目的)。所以你可以做到
$ cat < <( echo hi )
hi
您也可以
$ echo <( : )
/dev/fd/63
shell实际上将该进程替换扩展为文件名。
Process substitution是一项重击功能。它不是POSIX specification的一部分,并且不像灰烬那样存在。另一方面,Redirection是POSIX。
答案 1 :(得分:2)
<(command)
语法为Process Substitution,ash
shell(以及其他有限/等shell)不支持。{/ p>