You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Bash向JSON对象列表中追加新对象

在CI环境中用Bash追加JSON对象到现有数组

现有模板内容(含Terraform语法的伪JSON)

[
      {
        "name" : "server",
        "image" : "server:latest",
        "essential" : true,
        "environment" : concat(
          [
            {
              "name" : "TZ",
              "value" : "${var.env_timezone}"
            }
          ],
          [
            for key, value in var.env_for_server:
            {
              "name" : key,
              "value" : value
            }
          ]
        ,
        "portMappings" : [
          {
            "hostPort" : 3000,
            "protocol" : "tcp",
            "containerPort" : 3000
          }
        ],
      },
      {
        "name" : "client",
        "image" : "client:latest"
      },
      {
        "name" : "nginx_gateway",
        "image" : "nginx_gateway:latest",
        "essential" : true,
        "portMappings" : [
          {
            "hostPort" : 80,
            "protocol" : "tcp",
            "containerPort" : 80
          }
        ]
      }
 ]

待添加的对象

{
  "name": "sidecar",
  "image": "sidecar:latest",
  "essential": true
 
}

失败的尝试

之前用jq命令无法完成合并:

jq '. += [input]' existing_containers.json new_container.json > updated_containers.json

解决方法

现有文件不是标准JSON,包含Terraform的concat()和for循环语法,jq无法解析这类模板代码,改用sed做文本替换:

直接插入固定对象

# Linux系统
sed -i '$i\      },\      {
        "name": "sidecar",
        "image": "sidecar:latest",
        "essential": true
 
      }' existing_containers.json

# macOS系统(需指定备份文件后缀)
sed -i.bak '$i\      },\      {
        "name": "sidecar",
        "image": "sidecar:latest",
        "essential": true
 
      }' existing_containers.json

从文件读取对象插入

如果新对象存在于new_container.json中,用以下命令:

# Linux
sed -e '$i\      },' -e '$e cat new_container.json' existing_containers.json > updated_containers.json

# macOS
sed -e '$i\      },' -e "$(printf '\\n')"'$e cat new_container.json' existing_containers.json > updated_containers.json

内容的提问来源于stack exchange,提问作者David Tayar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:27:28