scripts script programacion operaciones manejo español ejemplos comandos comando cadenas aritmeticas bash curl argument-passing

script - Pasar parámetros a bash cuando se ejecuta una secuencia de comandos recuperada por curl



scripts bash ejemplos (3)

Otras alternativas

curl http://foo.com/script.sh | bash /dev/stdin arguments bash <( curl http://foo.com/script.sh ) arguments

Sé cómo ejecutar script de bash remoto, a través de estas sintaxis:

curl http://foo.com/script.sh | bash

o

bash < <( curl http://foo.com/script.sh )

que dan el mismo resultado

Pero, ¿y si necesito pasar argumentos al script bash? Es posible cuando el script se guarda localmente:

./script.sh argument1 argument2

Intenté varias posibilidades como esta, sin éxito:

bash < <( curl http://foo.com/script.sh ) argument1 argument2


Para mejorar un poco la respuesta de jinowolski , debes usar:

curl http://example.com/script.sh | bash -s -- arg1 arg2

Observe los dos guiones (-) que le dicen a bash que no procese nada siguiendo eso como argumentos para bash.

De esta forma funcionará con cualquier tipo de argumentos, por ejemplo:

curl -L http://bootstrap.saltstack.org | bash -s -- -M -N stable

Esto, por supuesto, funcionará con cualquier tipo de entrada a través de stdin, no solo curl, para que pueda confirmar que funciona con la simple entrada de script BASH a través de echo:

echo ''i=1; for a in $@; do echo "$i = $a"; i=$((i+1)); done'' | / bash -s -- -a1 -a2 -a3 --long some_text

Te dará la salida

1 = -a1 2 = -a2 3 = -a3 4 = --long 5 = some_text


tratar

curl http://foo.com/script.sh | bash -s arg1 arg2

Bash manual dice:

Si la opción -s está presente, o si no quedan argumentos después del procesamiento de la opción, los comandos se leen desde la entrada estándar. Esta opción permite configurar los parámetros posicionales cuando se invoca un shell interactivo.