Homebrew中的这一行是什么意思?
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
我知道-e
将在命令中包含ruby代码,但是我没有得到$()
部分。美元符号支架在这里做什么?
非常重要的是,在哪里可以找到有关此文档的信息?
答案 0 :(得分:10)
$(...)是Bash command substitution。它在命令执行之前发生;它在括号内执行命令并替换其输出。例如,
echo "There are $(ls | wc -l) files in this directory"
将首先执行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代码执行。
答案 1 :(得分:-1)
您的问题与Ruby无关;这是一个 shell 问题。假设运行此命令的shell是bash或ksh或Zsh,则这些shell将以该命令的标准输出替换格式为$(COMMAND)
的表达式。因此,根据您的情况,curl
命令的标准输出将作为Ruby代码执行。