假设我在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运行Shell脚本的安全性问题,但是现在让我们忽略所有这些问题。
cmd <<foo
在大多数shell中是Heredoc语法,可能不是您想要的。
mktemp
而不是使用自己的解决方案