shell - 带变量的 curl 不起作用 - Shell 脚本
问题描述
当我通过 shell 脚本 functioniert es 执行正常 curl 时。
这项工作:
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 控制值的拆分方式。它通常设置为在空格、制表符和换行符上发生拆分。
推荐阅读
- node.js - X-Powered-By:微服务中的头盔
- java - 为什么这个 for 循环会遇到 ArrayIndexOtOfBounds 错误?(爪哇)
- vue.js - 是否有用于谷歌地图的 npm 包,其中包含动态更改地图上每个标记的颜色的选项?
- apache-spark - 如何将多个 ML 管道(模型)应用于同一个 spark 流
- python - 如何知道一个字符串是否属于python中字符串列表的组合?
- flutter - Flutter:如何在 Flutter 中编写活动(UTM)参数
- android-intent - 点击通知仅打开最后一个(最后收到)
- ajax - 自定义搜索 JSON API 和 AMP – 显示搜索结果而不刷新?
- vba - 如何在选定文本中或从文档中的某个点搜索粗体段落?
- java - 数据库无法与spring boot连接