【发布时间】:2022-10-23 06:47:55
【问题描述】:
我这里有一个 json,它看起来像:
{
"cluster": "bvt-rtp-123",
"state": "installed",
"timestamp": "2022-02-14T10:23:01Z"
}
我想使用参数/环境变量使用jq 将对象动态添加到该 JSON 对象
结果应如下所示:
{
"cluster": "bvt-rtp-123",
"state": "installed",
"timestamp": "2022-02-14T10:23:01Z",
"aiops": {
"catalog_source": "abc.com/123",
"channel": "dev"
}
}
其中aiops、catalog_source和channel通过环境变量以这种方式参数化:
parent_key=aiops
child_key=catalog_source
child_val=abc.com/123
这个方法我已经试过了
cat test.json | jq --arg parent "$parent_key" --arg child "$child_key" --arg child_val "$payload_val" '.[$key].[$child] = $child_val'
但它抛出了这个错误:
jq: error: syntax error, unexpected '[', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.[$key].[$child] = $child_val
jq: 1 compile error
【问题讨论】: