如何在 curl 中 quote/use 变量
how to quote/use variables in curl
这可以正常工作
curl --header 'Accept: application/json' www.example.com
但是,如何实现这个(我想要header变量中的信息):
h="--header 'Accept: application/json'"
curl $h www.example.com
curl: option --header 'Accept: application/json': is unknown
curl: try 'curl --help' or 'curl --manual' for more information
在 zsh
中,不带引号的参数扩展默认不进行 word-splitting。
h="--header 'Accept: application/json'"
curl $h www.example.com # equiv to curl "--header 'Accept: application/json'"
您可以启用 word-splitting,但单引号仍然是 header.
的 部分
curl ${(z)h} www.example.com # equiv. to curl "--header" "'Accept: application/json'" www.example.com
你想要的是一个数组,其中单引号只是用来转义 space.
解决方案是使用数组。
h=(--header 'Accept: application/json')
curl $h www.example.com # equiv. to curl "--header" "Accept: application/json" www.example.com
array 参数扩展为一系列单独的单词,每个元素一个。
这可以正常工作
curl --header 'Accept: application/json' www.example.com
但是,如何实现这个(我想要header变量中的信息):
h="--header 'Accept: application/json'"
curl $h www.example.com
curl: option --header 'Accept: application/json': is unknown
curl: try 'curl --help' or 'curl --manual' for more information
在 zsh
中,不带引号的参数扩展默认不进行 word-splitting。
h="--header 'Accept: application/json'"
curl $h www.example.com # equiv to curl "--header 'Accept: application/json'"
您可以启用 word-splitting,但单引号仍然是 header.
的 部分curl ${(z)h} www.example.com # equiv. to curl "--header" "'Accept: application/json'" www.example.com
你想要的是一个数组,其中单引号只是用来转义 space.
解决方案是使用数组。
h=(--header 'Accept: application/json')
curl $h www.example.com # equiv. to curl "--header" "Accept: application/json" www.example.com
array 参数扩展为一系列单独的单词,每个元素一个。