Dire que j'ai un fichier à l'URL "http://mywebsite.com/myscript.txt" qui contient un script:
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
Et je tiens à les exécuter ce script sans d'abord l'enregistrer dans un fichier. Comment dois-je faire?
Maintenant, j'ai vu la syntaxe:
bash < <(curl -s http://mywebsite.com/myscript.txt)
Mais cela ne semble pas fonctionner comme il l'aurait fait si je l'ai enregistré dans un fichier, puis exécuté. Par exemple readline ne fonctionne pas, et le résultat est juste:
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
De même, j'ai essayé:
curl -s http://mywebsite.com/myscript.txt | bash -s --
Avec les mêmes résultats.
A l'origine, j'avais une solution comme:
timestamp=`date +%Y%m%d%H%M%S`
curl -s http://mywebsite.com/myscript.txt -o /tmp/.myscript.${timestamp}.tmp
bash /tmp/.myscript.${timestamp}.tmp
rm -f /tmp/.myscript.${timestamp}.tmp
Mais ce qui semble bâclée, et j'aimerais une solution plus élégante.
Je suis conscient des problèmes de sécurité concernant l'exécution d'un script shell à partir d'une URL, mais nous allons ignorer tout cela pour l'instant.