我正在尝试执行一个使用预定义变量作为标头的curl 命令。
header='-H "Content-Type: application/json" -H "userGUID: 7feb6e62-35da-4def-88e9-376e788ffd97" -H "Content-Length: 51"'
这本质上是curl命令
curl $header -w "http code: %{http_code}\\n" -X POST -d $BODY $URL
然后返回错误消息
rl: (6) Could not resolve host: application
curl: (6) Could not resolve host: 7feb6e62-35da-4def-88e9-376e788ffd97"
curl: (6) Could not resolve host: 51"
这按预期工作
curl -H "Content-Type: application/json" -H "userGUID: 7feb6e62-35da-4def-88e9-376e788ffd97" -H "Content-Length: 51" -w "http code: %{http_code}\\n" -X POST -d $BODY $URL
我尝试将标头作为变量传递的原因是因为我正在编写一个循环遍历数组的脚本,但目前由于某种原因这不适用于标头。传递 body 参数没有问题。
请注意,bash 中的变量扩展很容易让人措手不及。
一个很好的经验法则是在您想要扩展的任何变量周围加上双引号,例如curl "$header" -w "http code: %{http_code}\\n" -X POST -d "$BODY" "$URL"
.
Bash 总是扩展$SOMETHING
变量是否单独出现,或者出现在双引号中。 (如果它们出现在单引号中则不是)。
展开时with无论如何,双引号都会被 shell 视为单个“令牌”。
展开时without双引号将被解析,就像您键入了它们的内容而不是变量一样。因此,如果该变量有空格,这可能意味着 shell 会将它们视为参数之间的分隔符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)