我正在使用jq 1.5,并尝试通过jq传递两个环境变量来创建一个json对象:
export REGIONS="region1,region2"
export KMS_KEYS="key1,key2"
test.json
{
"builders": [
{
"name": "aws"
}
]
}
使用以下命令:
jq --arg regions $REGIONS --arg kmskeys $KMS_KEYS '.builders[].region_kms_key_ids={$regions}' test.json
当前结果:
{
"builders": [
{
"name": "aws",
"region_kms_key_ids": {
"regions": "region1,region2"
}
}
]
}
期望的结果:
{
"builders": [
{
"name": "aws",
"region_kms_key_ids": {
"region1": "key1",
"region2": "key2"
}
}
]
}
我纠结于如何使用区域变量content作为键,使用KMS_KEYS变量作为值。如有任何建议,不胜感激。
发布于 2020-01-30 12:27:48
通过逗号将$regions
和$kmskeys
拆分成两个单独的数组,将它们转置以将每个区域与相应的kms密钥配对,并从中生成对象,然后将它们添加在一起形成单个对象。例如:
.builders[].region_kms_key_ids = (
[ $regions/",", $kmskeys/"," ] | transpose | map({(.[0]):.[1]}) | add
)
https://stackoverflow.com/questions/59985760
复制