J'ai besoin d'exécuter un script en le canalisant bash
avec wget
(plutôt que de l'exécuter directement avec bash).
$ wget -O - http://example.com/my-script.sh | bash
Cela ne fonctionne pas car mon script contient des read
instructions. Pour une raison quelconque, cela ne fonctionne pas lors de la tuyauterie pour bash:
# Piping to bash works in general
$ echo 'hi'
hi
$ echo "echo 'hi'" | bash
hi
# `read` works directly
$ read -p "input: " var
input: <prompt>
# But not when piping - returns immediately
$ echo 'read -p "input: " var' | bash
$
Au lieu d' input:
inviter et de demander une valeur comme il se doit, la commande read est simplement passée par bash
.
Est -ce que quelqu'un sait comment je peux diriger un script avec read
pour bash
?
La substitution de processus fera ce que vous voulez:
bash <(wget ...)
Cela dit, je dois remettre en question votre motivation ici. Si vous contrôlez le serveur Web (et utilisez https), cela peut avoir du sens. Mais exécuter un script à partir d'Internet est très risqué.
la source
just running a script from the internet blind is very risky
- oui, nous savons que c'est risqué, mais les gens peuvent choisir de faire confiance aux scripts de certaines organisations. Voir la discussion dans les commentaires sur la réponse de @ Xen2050.Y a-t-il un problème avec:
?
la source
/tmp
, de nombreux programmes utilisent des fichiers temporaires. Je serais prêt à exécuter des scripts téléchargés immédiatement sans y jeter un œil au préalable ...