当我通过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"
- 准确地说,
IFS
env var控制值的拆分方式。它通常设置为在空格、制表符和换行符上进行拆分