我有这个示例shell脚本:
echo /$1/
Run Code Online (Sandbox Code Playgroud)
所以我可以打电话
$ . ./script 5
# output: /5/
Run Code Online (Sandbox Code Playgroud)
我想将脚本输入sh(ell),但是我也可以通过arg吗?
cat script | sh
# output: //
Run Code Online (Sandbox Code Playgroud)
Ant*_*nko 36
您可以使用以下-s选项将参数传递给shell :
cat script | bash -s 5
Run Code Online (Sandbox Code Playgroud)
nor*_*ree 24
用 bash -s -- <args>
例如,安装谷歌云 SDK
~ curl https://sdk.cloud.google.com | bash -s -- --disable-prompts
Wyc*_*yck 17
cat script | sh -s -- 5
Run Code Online (Sandbox Code Playgroud)
该-s参数告诉sh我们从标准输入获取命令,而不需要文件名作为位置参数。(否则,如果没有-s,下一个非标志参数将被视为文件名。)
告诉--sh 停止处理进一步的参数,以便脚本仅拾取它们(而不是应用于sh自身)。当您需要向脚本传递一个以-或开头--(例如:--dry-run)且必须被 忽略的标志时,这非常有用sh。另请注意,单个-相当于--。
cat script | sh -s - --dry-run
Run Code Online (Sandbox Code Playgroud)