Скажем, у меня есть файл по URL "http://mywebsite.com/myscript.txt", который содержит скрипт:
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"
И я хотел бы запустить этот сценарий без предварительного сохранения его в файл. Как мне это сделать?
Теперь я видел синтаксис:
bash < <(curl -s http://mywebsite.com/myscript.txt)
Но, похоже, это работает не так, как если бы я сохранил файл и затем выполнил. Например, readline не работает, и вывод просто:
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!
Точно так же я пробовал:
curl -s http://mywebsite.com/myscript.txt | bash -s --
С такими же результатами.
Изначально у меня было решение вроде:
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
Но это кажется небрежным, и я бы хотел более элегантное решение.
Я знаю о проблемах безопасности, связанных с запуском сценария оболочки из URL-адреса, но давайте сейчас все проигнорируем.