Bash puede ejecutar scripts desde la tubería. Un ejemplo mínimo sería:
> echo "echo hello world" | bash
hello world
Esto es útil si desea ejecutar un script descargado desde curl
o wget
.
Pero aparentemente, no se puede usar read
en este tipo de ejecución de script. Por ejemplo,
#!/bin/bash
echo 'input: '
read HELLO
echo hello: $HELLO
Si simplemente ejecuta el script anterior desde un archivo de script bash, podría ingresar el valor de $HELLO
. y el echo hello: $HELLO
imprimirá el resultado.
Si alimenta la secuencia de comandos de la manera que hablamos anteriormente:
> echo "echo 'input: '; read HELLO; echo hello: $HELLO" | bash
input:
hello:
No obtendrás la interacción en absoluto. Y $HELLO
queda vacío. También intenté agregar la -i
opción en bash, y no funcionó.
¿Hay alguna forma de que podamos usar read
en la secuencia de comandos canalizada? ¿Cómo? O, si no podemos, ¿por qué?