运行从stdin传输的脚本(Linux / Shell脚本)

时间:2012-04-01 16:33:27

标签: linux shell scripting command-line

假设我有一个脚本: my_script.sh

而不是做

./my_script.sh

我想做类似的事情:

cat my_script.sh | <some command here>

这样脚本就会执行。这可能吗?

用例是我想要执行的脚本是wget或s3cat等的输出。现在我将它保存到临时文件,将其更改为可执行文件,然后运行它。有没有办法直接这样做?

3 个答案:

答案 0 :(得分:19)

只需将它传递给您最喜欢的shell,例如:

$ cat my_script.sh
set -x
echo hello
$ cat my_script.sh | sh
+ echo hello
hello

set -x使shell在运行它之前打印出它将要运行的每个语句,方便调试,但它与您的问题无关 - 仅用于演示目的。)< / p>

答案 1 :(得分:5)

您可以使用:

cat my_script.sh | xargs -i <some_command> {}

或:

cat my_script.sh | bash -

答案 2 :(得分:1)

RVM建议将此方法发送到run their installer

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)