说我有一个包含脚本的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