說我有一個包含腳本的URL「http://mywebsite.com/myscript.txt」文件:執行bash腳本
#!/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運行shell腳本的安全問題,但我們現在忽略所有這些。
如果你最終創建一個臨時文件,你應該使用'mktemp'而不是滾動你自己的解決方案 – Hasturkun 2011-04-20 19:44:23
'cmd << foo'在大多數shell中是heredoc語法,可能不是你想要的。 – dietbuddha 2011-04-20 20:52:10