Homebrew的这一行是什么意思?
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Run Code Online (Sandbox Code Playgroud)
我理解-e将在命令中包含ruby代码,但我没有得到该$()部分.美元符号支架在这里做什么?
而且非常重要的是,我在哪里可以找到相关文档?
Ama*_*dan 10
$(...)是Bash 命令替换.它发生在命令执行之前; 它在括号内执行命令并替换其输出.例如,
echo "There are $(ls | wc -l) files in this directory"
Run Code Online (Sandbox Code Playgroud)
将首先执行ls | wc -l将输出例如17; 然后echo "There are 17 files in this directory".
curl是一个命令行实用程序,默认情况下,它获取URL中的内容并输出该内容.因此,/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)将首先下载https://raw.githubusercontent.com/Homebrew/install/master/install的内容,然后将其替换为命令行作为-e选项的参数.然后Ruby将它作为Ruby代码执行.
use*_*428 -1
你的问题与Ruby无关;这是一个外壳问题。假设运行此命令的 shell 是 bash、ksh 或 Zsh,这些 shell 会将此$(COMMAND)命令的标准输出替换为以下形式的表达式。因此,在您的情况下,命令的标准输出curl将作为 Ruby 代码执行。