通过管道传递脚本的脚本

时间:2013-02-04 18:28:46

标签: bash

我有这个示例shell脚本:

echo /$1/

所以我可以致电

$ . ./script 5
# output: /5/

我想将脚本传递给sh(ell),但是我也可以传递arg吗?

cat script | sh 
# output: //

3 个答案:

答案 0 :(得分:32)

您可以使用-s选项将参数传递给shell:

cat script | bash -s 5

答案 1 :(得分:2)

使用bash -s -- <args>

例如,安装google cloud sdk

~ curl https://sdk.cloud.google.com | bash -s -- --disable-prompts

答案 2 :(得分:0)

cat script | sh -s -- 5

-s 参数告诉 sh 从标准输入中获取命令并且不需要文件名作为位置参数。 (否则,如果没有 -s,下一个非标志参数将被视为文件名。)

-- 告诉 sh 停止处理进一步的参数,以便它们仅被脚本接收(而不是应用于 sh 本身)。这在您需要将标志传递给脚本的情况下很有用,该标志以 --- 开头(例如:--dry-run)必须被 sh 忽略。另请注意,单个 - 等效于 --

cat script | sh -s - --dry-run