Что означает `ruby -e" $ (curl url) "`? - PullRequest
0 голосов
/ 25 июня 2018

Что означает эта строка из Homebrew ?

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Я понимаю, что -e будет включать в команду код ruby, но я не получаю часть $(). Что здесь делает скобка со знаком доллара?

И очень важно, где я могу найти документацию для этого?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

$ (...) - это Bash подстановка команд . Это происходит до того, как команда выполнена; он выполняет команду в круглых скобках и подставляет свой вывод. Например,

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.

0 голосов
/ 25 июня 2018

Ваш вопрос не имеет отношения к Ruby; это shell вопрос. Предполагая, что оболочкой, выполняющей эту команду, является bash, или ksh, или Zsh, эти оболочки заменяют выражение вида $(COMMAND) стандартным выводом этой команды. Следовательно, в вашем случае стандартный вывод команды curl выполняется как код Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...