【发布时间】:2021-02-18 13:19:20
【问题描述】:
我想使用 Databox 发出 curl 请求以推送 somemetrix 并希望在 shell 脚本中执行此操作。 这是数据框 POST 请求示例(就像一个魅力)
curl https://push.test \
-u token
: \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/vnd.databox.v2+json' \
-d '{
"data":[
{
"$testcount": 50,
"test_name": "test"
}
]
}'
当我将 json 主体形成为单独的 json 字符串并尝试作为参数传递时,它不起作用并给出 json 解析错误。我不确定我在这里做错了什么。有人可以帮忙吗?我是 shell 脚本的新手
#!/bin/bash
JSON_STRING= '{"data" : [{"$testcount":50,"testname":"test"}]}'
echo "$JSON_STRING"
curl https://testpush \
-u token
: \
-X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/vnd.databox.v2+json' \
-d '$JSON_STRING'
错误:
{"type":"invalid_json","message":"Invalid request body - JSON parse error"}
我已经为请求添加了我的令牌,所以授权应该可以工作。
【问题讨论】:
-
=周围有多余的空格。 -
另外,第二个脚本最后一行中的
$JSON_STRING应该用双引号括起来,以便将其扩展为您刚刚设置的内容。 -
我删除了多余的空格并添加了双引号 -d ' "$JSON_STRING" '。但仍然遇到同样的错误
-
现在删除单引号。我应该更清楚一点。