我有这个示例shell脚本:
echo /$1/
所以我可以致电
$ . ./script 5
# output: /5/
我想将脚本传递给sh(ell),但是我也可以传递arg吗?
cat script | sh
# output: //
答案 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