O que significa bash <<sintaxe?

10

Ruby Version Manager (RVM) instalado da seguinte maneira:

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

Eu entendo o que primeiro <significa (alimenta script bash para bash intérprete), estou confuso com <(...)parte. Então, o que os parênteses fazem aqui e o sinal menor que. Em quais casos podemos usar a mesma sintaxe?

Eu tentei cavar na internet, encontrei esta questão SO /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces e esta pergunta no ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Mas ainda não temos idéia de por que usamos esses parênteses e por que usamos o redirecionamento de entrada duas vezes.

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

não é o mesmo?

Obrigado.

Nemoden
fonte
Eu acho que as melhores perguntas é: Por que isso é o mesmobash <(curl -s ...)
de Bruno Bronosky
O comando <(...) funciona quando o comando aceita um nome de arquivo nesse local. Se você colocar outro <antes dele, o comando deverá aceitar a entrada do stdin. Alguns comandos funcionarão de qualquer maneira e usarão stdin se não houver um nome de arquivo fornecido. A resposta aceita sugere essa diferença.
Lee Meador

Respostas:

5

Significa "executar o comando entre colchetes e retornar um nome de arquivo que represente aqui a saída padrão desse comando".

Então, isso se traduz em dois comandos:

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

... onde "alguma coisa" é a mágica. (Normalmente, /dev/fd/...ou um cachimbo.)

Daniel Pittman
fonte
3
mas por que não posso simplesmente usar curl ... | bash -s estável?
Lilás 17/11