带变量的curl不起作用-外壳脚本



当我通过shell脚本函数执行正常卷曲时。

这项工作:

curl -s -v -X POST --data '{
"zoneConfig": {
"userID": "'$userid'",
"name": "'$myName'",
"id":"'$id'"
},
"delete": [
{
"id": "ID1"
},
{
"id": "ID2"
}
]
}' https://urlToAPI

但当我把";删除";在一个变量中,我从API供应商得到一个未定义的错误

不起作用

delete='{
"id": "ID1"
},
{
"id": "ID2"
}'
curl -s -v -X POST --data '{
"zoneConfig": {
"userID": "'$userid'",
"name": "'$myName'",
"id":"'$id'"
},
"delete": [
'$deleteValues'
]
}' https://urlToAPI

但我不明白两者的区别,因为两种配置都一样?

插值时,值在空白处拆分[1]

因此,

a='a b c'
prog $a

相当于

prog 'a' 'b' 'c'

如果插值发生在双引号内,则不会发生此拆分。

因此,

a='a b c'
prog "$a"

相当于

prog 'a b c'

因此,您需要更改

$deleteValues

"$deleteValues"

  1. 准确地说,IFSenv var控制值的拆分方式。它通常设置为在空格、制表符和换行符上进行拆分

最新更新