Katakanlah saya punya file di URL "http://mywebsite.com/myscript.txt" yang berisi skrip:
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
Dan saya ingin menjalankan skrip ini tanpa terlebih dahulu menyimpannya ke file. Bagaimana saya melakukan ini?
Sekarang, saya telah melihat sintaksnya:
bash < <(curl -s http://mywebsite.com/myscript.txt)
Tapi ini sepertinya tidak berfungsi seperti jika saya menyimpan ke file dan kemudian dieksekusi. Misalnya readline tidak berfungsi, dan outputnya hanya:
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
Demikian pula, saya sudah mencoba:
curl -s http://mywebsite.com/myscript.txt | bash -s --
Dengan hasil yang sama.
Awalnya saya punya solusi seperti:
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
Tapi ini sepertinya ceroboh, dan saya ingin solusi yang lebih elegan.
Saya mengetahui masalah keamanan terkait menjalankan skrip shell dari URL, tetapi mari kita abaikan semua itu untuk saat ini.
cmd <<foo
adalah sintaks heredoc di sebagian besar shell dan mungkin bukan yang Anda inginkan.
mktemp
alih-alih menggulirkan solusi Anda sendiri