如何引用shell脚本命令?

时间:2014-06-16 19:02:41

标签: shell quotes

我正在尝试从shell脚本中形成一个参数化调用来卷曲

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

如何正确引用?

1 个答案:

答案 0 :(得分:2)

如果你正在使用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"`