2010-04-29 5 views
10

Esto es lo que estaba tratando de hacer:Diferencia entre tuberías de un archivo a sh y llamar a un archivo de cáscara

$ wget -qO- www.example.com/script.sh | sh 

que descarga en silencio el guión y lo imprime a la salida estándar que luego se canaliza a sh. Desafortunadamente, esto no funciona, ya que no puede esperar la entrada del usuario en varios puntos, así como algunos errores de sintaxis.

Esto es lo que realmente funciona:

$ wget -qOscript www.example.com/script.sh && chmod +x ./script && ./script 

Pero cuál es la diferencia?

Estoy pensando que tal vez la canalización del archivo no ejecuta el archivo, sino que ejecuta cada línea individualmente, pero soy nuevo en este tipo de cosas, así que no sé.

+1

su guión podría necesitar realmente diferente shell desde sh, como bash, si lo ejecutas, se inspeccionó la línea shebang, si la tubería es, no lo hará – flownt

+0

se me había ocurrido, pero se conducirá directamente Bash no lo solucionó. –

Respuesta

8

Cuando canaliza a sh, stdin de ese shell/script será el conducto. Por lo tanto, el guión no puede tomar, p. la entrada del usuario desde la consola. Cuando ejecuta el script normalmente, stdin es la consola, donde puede ingresar la entrada.

+0

Eso tiene mucho sentido. Muchas gracias. –

2

Usted puede tratar de decir la cáscara para ser interactivo:

$ wget -qO- www.example.com/script.sh | sh -i 
+1

No funciona para mí. –

0

que tenían el mismo problema, y ​​después de retoques y googling esto es lo que funcionó para mí.

wget -O - www.example.com/script.sh | sh 
Cuestiones relacionadas