You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用bash -s执行远程install.sh时如何传递带'-'/'--'的参数

解决带短横线的参数无法传给远程install.sh脚本的问题

这问题我碰到过好几次了,核心原因是当你用管道直接下载并运行脚本时,带-或--前缀的参数会被前面的命令(比如curl)或者sh本身的参数解析逻辑“截胡”,没法正确传递给你的install.sh。下面给你几个实用的解决方案:

方案1:用--分隔参数(最常用的管道方式)

如果是用curl或者wget通过管道运行脚本,一定要加上sh -s --来明确参数的分界:

# curl 版本
curl https://your-server-path/install.sh | sh -s -- -p your-value abc another-arg

# wget 版本
wget -qO- https://your-server-path/install.sh | sh -s -- -p your-value abc another-arg

这里的细节:

  • -s告诉sh从标准输入(也就是管道过来的脚本内容)读取并执行
  • --是关键,它会告诉sh:后面所有的参数都直接传给要执行的脚本,不要当作sh自己的选项

这样不管是-p这类短选项,还是--prefix这类长选项,都会原封不动地传递给install.sh。

方案2:先下载再运行(最直观易调试)

如果觉得管道方式容易搞混,也可以用一行命令分步骤完成下载、加权限、运行,这样参数直接传给脚本,完全不会有冲突:

curl -o install.sh https://your-server-path/install.sh && chmod +x install.sh && ./install.sh -p your-value abc another-arg

这个方法的好处是:

  • 脚本下载失败的话,后面的运行步骤不会执行,更安全
  • 参数直接跟在./install.sh后面,和本地运行脚本的逻辑完全一致,不容易出错

为什么带短横线的参数会失效?

举个反例,如果你直接写:

curl https://your-server-path/install.sh | sh -p your-value

这里的-p会被sh当作自己的命令行选项(sh -p是启动特权模式),而不是传递给install.sh。这就是带短横线的参数无法被识别的核心原因——它们被前面的sh命令优先解析了。

内容的提问来源于stack exchange,提问作者Ashot Khachatryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:34:05