Supponi di avere un file nell'URL "http://mywebsite.com/myscript.txt" che contiene uno script:
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
E vorrei eseguire questo script senza prima salvarlo in un file. Come faccio a fare questo?
Ora ho visto la sintassi:
bash < <(curl -s http://mywebsite.com/myscript.txt)
Ma questo non sembra funzionare come se fosse salvato su un file e quindi eseguito. Ad esempio readline non funziona e l'output è solo:
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
Allo stesso modo, ho provato:
curl -s http://mywebsite.com/myscript.txt | bash -s --
Con gli stessi risultati.
Inizialmente avevo una soluzione come:
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
Ma questo sembra sciatto e vorrei una soluzione più elegante.
Sono a conoscenza dei problemi di sicurezza relativi all'esecuzione di uno script di shell da un URL, ma ignoriamo tutto ciò per ora.
cmd <<foo
è la sintassi ereditaria nella maggior parte delle shell e probabilmente non è ciò che si desidera.
mktemp