在 bash 中的 json 数组中动态添加多个键值对

Dynamically add multiple key value pair in a json array in bash

我有下面的 json 数组,我想使用 bash 在 json 数组中附加两个额外的键值对。这需要在我现有的 json 数组文件上动态添加。有人可以分享一些解决此问题的想法吗?

json数组文件:

[
  {
   "entry": "10.20.15.0/24",
   "comment": "test ip1"
  },

  {
    "entry": "10.20.16.0/24",
    "comment": "test ip2"
  }
]

我想追加额外的键值对,

 {
   "entry": "10.20.17.0/24",
   "comment": "test ip3"
  },

  {
    "entry": "10.20.18.0/24",
    "comment": "test ip4"
  }

所以最终的 json 数组应该如下所示,

[
  {
   "entry": "10.20.15.0/24",
   "comment": "test ip1"
  },

  {
    "entry": "10.20.16.0/24",
    "comment": "test ip2"
  },

  {
   "entry": "10.20.17.0/24",
   "comment": "test ip3"
  },

  {
    "entry": "10.20.18.0/24",
    "comment": "test ip4"
  }

]

要添加的硬编码记录:

jq '
   . + [
      {
         "entry": "10.20.17.0/24",
         "comment": "test ip3"
      },
      {
         "entry": "10.20.18.0/24",
         "comment": "test ip4"
      }
   ]
' file.json

作为参数提供的要添加的记录:

jq --argjson to_add '
   [
      {
         "entry": "10.20.17.0/24",
         "comment": "test ip3"
      },
      {
         "entry": "10.20.18.0/24",
         "comment": "test ip4"
      }
   ]
' '. + $to_add' file.json

作为文件提供的要添加的记录:

jq --argfile to_add to_add.json '. + $to_add' file.json

jq --slurp add file.json to_add.json