带有 curl 和命令行参数的 Sudo sh 脚本

问题描述

我正在尝试运行一个接受命令行参数的 sudoed curled bash 脚本,但我遇到了语法问题。使用这个,参数 ($0) 似乎没有被脚本接收。

sudo sh -c "$(curl -sSL https://s3-us-west-2.amazonaws.com/script/path/install.sh) argument"

解决方法

阅读关于美丽的 sh(1) man page-c 部分:

-c 字符串

如果存在 -c 选项,则从字符串中读取命令。 如果字符串后面有参数,则将它们分配给位置参数,从 $0 开始。

所以你需要做的就是将参数移动'脚本'

sudo sh -c "$(curl -sSL https://s3-us-west-2.amazonaws.com/script/path/install.sh)" 'argument'

小测试示例:

sh -c 'echo "args: $0"' 'Test argument'

Try it online!