运行一个从stdin(Linux / Shell脚本)

假设我有一个脚本my_script.sh

而不是做

./my_script.sh 

我想做一些事情:

 cat my_script.sh | <some command here> 

使脚本执行。 这可能吗?

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

只需将其输入到您喜欢的外壳中,例如:

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

set -x会让shell在运行之前打印出每个要运行的语句,方便调试,但是与您的问题没有任何关系 – 只是为了演示目的。)

你可以使用:

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

要么:

 cat my_script.sh | bash - 

RVM建议使用此方法运行其安装程序 :

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