bash和ash括号的区别

时间:2015-06-11 13:18:56

标签: linux bash shell unix ash

我试图使用diff命令来比较目录列表,它在bash中工作正常:

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

然而,在灰(没有其他外壳的嵌入式设备)上我得到了

-ash: syntax error: unexpected "("

阅读输入操作符<或括号( )是否有任何区别?

2 个答案:

答案 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 Substitutionash shell(以及其他有限/等shell)不支持。{/ p>