RVM主页
建议人们使用
安装RVMbash < <( curl http://rvm.io/releases/rvm-install-head )
这是什么语法? command <( another_command)
原来的线不能吗? curl http://rvm.io/releases/rvm-install-head | bash
答案 0 :(得分:14)
<(command)
使用命令的输出(或使用现有的/dev/fd
文件)创建命名管道,并将该管道的文件名替换为命令。 <
然后重定向来自该给定文件的标准输入。
所以是的,在这种情况下,这相当于
curl http://rvm.io/releases/rvm-install-head | bash
我不确定为什么他们会建议更复杂,更便携的版本。在某些情况下,您希望使用< <()
的版本使用管道版本,因为管道为接收输入的命令创建子shell(在本例中为bash
),而{{1为生成输出的命令创建一个子shell。如果使用管道,则子shell中的命令不能修改shell环境中的变量,这有时是需要的(如果要将某些内容传递给< <()
命令)。但是,在这种情况下,命令的输出只是直接传递给while read ...
的显式调用;这里没有任何东西需要从父shell运行。
答案 1 :(得分:4)
请参阅part 23 of the advanced bash scripting guide。
简而言之,<( x )
和>( y )
语法的效果如下:
您将它们放在命令行中,其中包含文件名
封闭的命令将
<(x)
)或>(y)
)临时文件(或命名管道,bash将对其进行管理),其名称将提供给您的外部命令。