【问题标题】:Sudo sh script with curl and command line argument带有 curl 和命令行参数的 Sudo sh 脚本
【发布时间】:2021-06-09 22:46:44
【问题描述】:

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

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

【问题讨论】:

  • 也许sudo bash -s argument < <(curl -sSL https://s3-us-west-2.amazonaws.com/script/path/install.sh)
  • 一针见血。太棒了!
  • $0 的值应该是一个单独的参数,即sudo sh -c "$(curl -sSL https://s3-us-west-2.amazonaws.com/script/path/install.sh)" "argument"

标签: linux bash sh sudo


【解决方案1】:

阅读美丽的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!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 2020-09-08
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2015-12-17
    相关资源
    最近更新 更多