首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从URL执行bash脚本

从URL执行bash脚本
EN

Stack Overflow用户
提问于 2011-04-21 03:35:23
回答 16查看 202.1K关注 0票数 217

假设我在URL "http://mywebsite.com/myscript.txt“处有一个包含脚本的文件:

代码语言:javascript
复制
#!/bin/bash
echo "Hello, world!"
read -p "What is your name? " name
echo "Hello, ${name}!"

我想运行这个脚本,而不是先将它保存到文件中。我该怎么做呢?

现在,我已经看到了语法:

代码语言:javascript
复制
bash < <(curl -s http://mywebsite.com/myscript.txt)

但这似乎不像我保存到文件然后执行时的工作方式。例如,readline不起作用,输出结果如下:

代码语言:javascript
复制
$ bash < <(curl -s http://mywebsite.com/myscript.txt)
Hello, world!

同样,我也尝试过:

代码语言:javascript
复制
curl -s http://mywebsite.com/myscript.txt | bash -s --

结果是一样的。

最初我有一个解决方案,比如:

代码语言:javascript
复制
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脚本的安全性问题,但现在让我们忽略所有这些问题。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2011-04-21 03:45:52

代码语言:javascript
复制
source <(curl -s http://mywebsite.com/myscript.txt)

应该这么做。或者,不使用初始重定向,即重定向标准输入;bash接受一个文件名,无需重定向就可以很好地执行,而<(command)语法提供路径。

代码语言:javascript
复制
bash <(curl -s http://mywebsite.com/myscript.txt)

如果您查看echo <(cat /dev/null)的输出,可能会更清楚

票数 253
EN

Stack Overflow用户

发布于 2013-07-14 04:40:32

这是通过向远程脚本传递一些参数(arg1 Arg2)来执行远程脚本的方法:

代码语言:javascript
复制
curl -s http://server/path/script.sh | bash /dev/stdin arg1 arg2
票数 101
EN

Stack Overflow用户

发布于 2015-03-28 20:03:21

对于bash,Bourne shell和fish:

代码语言:javascript
复制
curl -s http://server/path/script.sh | bash -s arg1 arg2

标志"-s“使外壳程序从标准输入中读取。

票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5735666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档