差异在bash和灰括号

我试图用比较目录列表一个diff命令,在bash工作正常:差异在bash和灰括号

diff <(cd alpha ; find . -type f) <(cd beta; find . -type f) 

然而,灰分在(嵌入式设备没有其他外壳可用)我得到

-ash: syntax error: unexpected "(" 

是否有关于读取输入操作<或括号()有什么区别?

回答:

请勿将<(…)中的尖括号与cat < file等重定向中的尖括号混淆。在bash中,<(echo hi)实际上是一个内容为“hi”的文件(至少为了阅读目的)。所以,你可以做

$ cat < <(echo hi) 

hi

你也可以做

$ echo <(:) 

/dev/fd/63

和外壳实际上扩大了进程替换的文件名。

Process substitution是bash功能。它不是POSIX specification的一部分,也不存在于灰烬之类的壳中。另一方面,另一方面,POSIX是Redirection。

回答:

<(command)语法是Process Substitution并且不受ash shell(和其他有限的/ etc。shells)的支持。

以上是 差异在bash和灰括号 的全部内容, 来源链接: utcz.com/qa/262109.html

回到顶部