Что означает 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

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

Спасибо.

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

Ответы:

7

Это процесс замещения . Он передает вывод команды в FIFO, который может быть прочитан как обычный файл.

Игнасио Васкес-Абрамс
источник
5

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

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

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

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

Даниэль Питтман
источник
3
но почему я не могу просто использовать локон ... | bash -s стабильный?
Lilás