Что означает bash <<синтаксис?


10

Ruby Version Manager (RVM) устанавливается следующим образом:

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

Я понимаю, что сначала <означает (передает скрипт bash в интерпретатор bash), я запутался с <(...)частью. Итак, что здесь делают круглые скобки и чем меньше знак. В каких случаях мы можем использовать тот же синтаксис?

Я попытался покопаться в интернете, нашел этот ТАК вопрос /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces и этот вопрос на ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Но все еще не знаю, почему мы используем эти скобки и почему мы используем перенаправление ввода дважды.

bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer

не то же самое?

Спасибо.


Я думаю, что лучшие вопросы: почему это то же самоеbash <(curl -s ...)
Бруно Броноски

Команда <(...) работает, когда команда принимает имя файла в этом месте. Если вы поставите другой <перед этим, команда должна принять ввод от stdin. Некоторые команды будут работать в любом случае и использовать stdin, если имя файла не указано. Принятый ответ намекает на эту разницу.
Ли Меадор

Ответы:



5

Это означает «запустить команду в скобках и вернуть имя файла, которое представляет стандартный вывод этой команды здесь».

Итак, это переводится на две команды:

curl ... > something
bash -s stable < something

... где "что-то" это магия. (Как правило, /dev/fd/...или труба.)


3
но почему я не могу просто использовать локон ... | bash -s стабильный?
Lilás
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.