我发现 rvm(ruby 版本管理器)是使用以下命令安装的:
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )
据我了解,我们获取脚本内容并将其传递给 bash(我相信< <
这<<
是同一件事?)我对此部分感兴趣< <
,在网上找到了以下描述:
<<
token 表示使用当前输入流作为程序的 STDIN,直到看到 token。
这对我来说不太清楚,有人可以举个例子或者用更简单的方式解释一下吗?
答案1
不,< <
和<<
不是同一件事。
第一个由公共<
重定向字符与语法的第一个字符组合而成<(command)
。这是一个ksh
构造(也可以在bash
和中找到zsh
)称为流程替代它获取输出并将其提供在一个文件中,该文件的名称引用正在写入的command
管道的另一端。command
换句话说,您可以将< <(command)
其视为< file
,其中 file 包含 的输出command
。
答案2
这是一种实现更简单的复杂方法:
curl -s https://raw.github.com/... | bash