【问题标题】:Shell script not working for curl requestShell 脚本不适用于 curl 请求
【发布时间】: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" '。但仍然遇到同样的错误
  • 现在删除单引号。我应该更清楚一点。

标签: json bash shell curl


【解决方案1】:

= 周围有多余的空格。

另外,第二个脚本最后一行中的$JSON_STRING 应该用双引号而不是单引号,以使其扩展为您刚刚设置的内容。

顺便说一句,如果数据失控或敏感,您可能需要研究以字母 @ 开头的数据的可能性,然后将其余部分作为包含数据的文件名。

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 2017-06-16
    • 1970-01-01
    • 2020-06-13
    • 2021-09-06
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多