shell 如何使用bash在动态变量中用新值更新字段?

bvpmtnay  于 2023-01-31  发布在  Shell
关注(0)|答案(1)|浏览(110)

如何使用bash在动态变量中用新值更新字段?
我在一个变量中存储了一些curl输出,下面是它的输出响应。

data=$(curl -s --location --request GET "${HOST}/api/v1/envs/projects/${PROJECT_ID}?page=0&pageSize=25" --header "Accept: application/json" --header "Content-Type: application/json" --header "Authorization: Bearer "$token"" | jq -r '.data[]')
echo "$data"

{
  "id": "8aa0809085f46e000185f4c28b7a0b52",
  "createdBy": "8aa0808e82fd01fb0182fd0b05820007",
  "createdDate": "2023-01-27T19:44:28.538+0000",
  "modifiedBy": "8aa0808e82fd01fb0182fd0b05820007",
  "modifiedDate": "2023-01-27T19:45:14.811+0000",
  "version": null,
  "inactive": false,
  "projectId": "8aa0809085f46e000185f4c28b760b51",
  "name": "Master",
  "refId": "Master",
  "description": null,
  "baseUrl": "http://petstore.swagger.io/v1",
}

现在,我想动态更新data变量中的baseUrl字段,并将更新完成的JSON对象存储在相同或不同的变量中,以便能够在不同的curl请求操作中使用它。
我们如何在bash脚本中做到这一点?

z9smfwbn

z9smfwbn1#

您已经在使用jq提取API返回的部分数据。您可以扩展此jq命令以动态修改baseURL字段。以下代码将更新data数组中第一个对象中的baseURL,然后将其打印出来:

jq -r '.data[0].baseUrl = "http://example.com" | .data[0]'

相关问题