Que signifie la syntaxe bash <<?

10

Ruby Version Manager (RVM) installé comme suit:

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

Je comprends ce que signifie <en premier (alimente le script bash à l'interpréteur bash), je suis confus avec une <(...)partie. Alors, que font les parenthèses ici et le signe moins que. Dans quels cas peut-on utiliser la même syntaxe?

J'ai essayé de creuser sur Internet, j'ai trouvé cette question SO /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces et cette question sur ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Mais je n'ai toujours aucune idée pourquoi nous utilisons ces parenthèses et pourquoi nous utilisons la redirection d'entrée deux fois.

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

ce n'est pas pareil?

Merci.

Nemoden
la source
Je pense que la meilleure question est: pourquoi est-ce la même chosebash <(curl -s ...)
Bruno Bronosky
la commande <(...) fonctionne lorsque la commande accepte un nom de fichier à cet emplacement. Si vous mettez un autre <avant, la commande doit accepter l'entrée de stdin. Certaines commandes fonctionneront dans les deux sens et utiliseront stdin si aucun nom de fichier n'est fourni. La réponse acceptée fait allusion à cette différence.
Lee Meador

Réponses:

5

Cela signifie "exécutez la commande entre crochets et retournez ici un nom de fichier qui représente la sortie standard de cette commande".

Donc, cela se traduit par deux commandes:

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

... où "quelque chose" est la magie. (En général, /dev/fd/...ou un tuyau.)

Daniel Pittman
la source
3
mais pourquoi ne puis-je pas simplement utiliser curl ... | bash -s stable?
Lilás