bash里面如果定义JSON格式数据传递给命令行参数

例如当我们用curl给REST Service发送POST请求时常常需要捎带JSON数据内容。

有一个办法,就是先定义JSON数据在一个文本文件里面,例如:

$ cat data.json
{
       "aaa": "AAA",
        "bbb": "BBB"
}

然后使用把文件传给curl命令:

$ curl -X POST -d @data.json http://your_rest_service_url

这样会使用到两个文件,一个数据文件,一个命令文件;很多人会觉得这样很不爽,包括我,能不能把他们放在同一个问题里面呢。

$ curl -X POST -d '{"aaa": "AAA", "bbb": "BBB"}' http://URL

这样是没有任何问题的,但是,如果JSON数据结构比较复杂,拼成一行影响阅读和修改。我们还是想保留JSON格式数据,然后放在一个文件里面,下面给出一个例子:

#!/bin/bash

JSON='{
        "aaa": "AAA",
        "bbb": "BBB"
      }'


curl -X PUT -d "${JSON}" "http://localhost:8080/myservice/api/..."

这个例子中的JSON数据可以保持JSON格式,方便阅读和调整修改。

再一个例子,如何使用变量。

#!/bin/bash

BBB="ABCD"
JSON='{
        "aaa": "AAA",
        "bbb": "'${BBB}'"
      }'


curl -X PUT -d "${JSON}" "http://localhost:8080/myservice/api/..."

在JSON数据里面使用了一个shell变量,达到一样的效果。

https://blog.csdn.net/weixin_43874301/article/details/120653326

文档更新时间: 2022-04-21 02:17   作者:月影鹏鹏