如何使用bash curl将JSON作为变量发送?

yuk*_*182 4 bash curl json

我正在尝试使用 curl 发送 POST 请求,但我想将 json 数据存储在一个变量中,以便在发生错误时重新发送它。我使用了这个代码:

jsonvariable="{"ora" : "value1", "temp" : "value2", "rh" : "value3", "lat" : "value4", "longi" : "value5"}"


curl -X POST -H "Content-Type: application/json" -d '$jsonvariable' http://localhost:8080/updates
Run Code Online (Sandbox Code Playgroud)

-d选项后的格式不正确。你能帮助我吗?

这段代码:

curl -X POST -H "Content-Type: application/json" -d '{"ora" : "value1", "id" : "value2", "temp" : "value3","rh" : "value4", "lat" : "value5", "longi" : "value6"}' http://localhost:8080/updates
Run Code Online (Sandbox Code Playgroud)

相反,没有错误

des*_*ert 5

您使用了防止变量被扩展的单引号。改用双引号:

curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates
Run Code Online (Sandbox Code Playgroud)

如果您的变量内容包含双引号,您可以用例如反斜杠来引用它们。

您可以省略-X POST此处,因为如果您指定要发送的数据,则 POST 是默认方法-d

关于引用的进一步阅读bash如何输入名称中包含特殊字符的文件或目录?

  • 这将问题简化为更困难的问题。那么我如何正确转义 `$jsonvariable` 呢? (2认同)