【问题标题】:How to quote a shell script command?如何引用shell脚本命令?
【发布时间】:2014-08-06 16:11:13
【问题描述】:

我正在尝试从 shell 脚本中对 curl 进行参数调用

header_string="--header \"X-param1: 1\" --header \"X-param2: 2\""
url="http://example.com"
command="curl $header_string $url"

a=`${command}`

这不起作用,因为它被解释为

curl --header '"X-param1:' '1"' --header '"X-param2:' '2"' http://example.com

我怎样才能正确引用这个?

【问题讨论】:

    标签: shell quotes


    【解决方案1】:

    如果您使用 BASH,则可以充分利用 BASH 数组:

    header_string=(--header "X-param1: 1" --header "X-param2: 2")
    url="http://example.com"
    command="$(curl -s "${header_string[@]}" "$url")"
    

    但如果你使用旧的sh,那么使用可怕的eval

    header_string="--header \"X-param1: 1\" --header \"X-param2: 2\""
    url="http://example.com"
    command=`eval "curl $header_string $url"`
    

    【讨论】:

    • 很好(ab)使用eval。 +1。
    • 首选方法是使用 BASH 并避免 eval :)
    猜你喜欢
    • 2014-07-26
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2016-10-01
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多