¿Qué significa la sintaxis bash <<?


10

Ruby Version Manager (RVM) instalado así:

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

Entiendo lo que primero <significa (alimenta el script bash al intérprete bash), estoy confundido con <(...)parte. Entonces, qué paréntesis hacen aquí y menos que signo. ¿En qué casos podemos usar la misma sintaxis?

Traté de excavar en Internet, encontré esta pregunta SO /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces y esta pregunta en ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Pero aún no tengo idea de por qué usamos esos paréntesis y por qué usamos la redirección de entrada dos veces.

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

no es lo mismo?

Gracias.


Creo que las mejores preguntas son: ¿Por qué es lo mismobash <(curl -s ...)
Bruno Bronosky

El comando <(...) funciona cuando el comando acepta un nombre de archivo en esa ubicación. Si coloca otro <antes, el comando debe aceptar la entrada de stdin. Algunos comandos funcionarán de cualquier manera y usarán stdin si no se proporciona un nombre de archivo. La respuesta aceptada insinúa esta diferencia.
Lee Meador

Respuestas:



5

Significa "ejecutar el comando dentro de los corchetes y devolver aquí un nombre de archivo que represente la salida estándar de ese comando".

Entonces, eso se traduce en dos comandos:

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

... donde "algo" es la magia. (Típicamente, /dev/fd/...o una tubería).


3
pero ¿por qué no puedo usar curl ... | bash -s estable?
Lilás
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.