我想知道是否可以使用参数在jq
中构建字段名称。
示例:
jq -rc \
--arg secret_name ${secret_name} \
--arg secret_value ${secret_value} \
'.data.$secret_name = "$secret_value"'
在上面的示例中,我想使用参数secret_name
的值在.data
下创建一个键。这可以使用jq
吗?
示例数据:
secret_name=abc
secret_value=xyz
运行jq
的JSON:
{
"apiVersion": "v1",
"data": {},
"kind": "Secret",
"metadata": {
"name": "kv-secrets",
"namespace": "default"
},
"type": "Opaque"
}
预期产出:
{
"apiVersion": "v1",
"data": {
"abc": "xyz"
},
"kind": "Secret",
"metadata": {
"name": "secrets"
},
"type": "Opaque"
}
请注意,我打算运行原始命令来填充.data
更多的键值对。
答案 0 :(得分:6)
使用变量,您需要使用长[...]
表单作为密钥。您不需要在JSON过滤器中引用变量;变量是字符串值。
jq -rc \
--arg secret_name "${secret_name}" \
--arg secret_value "${secret_value}" \
'.data[$secret_name] = $secret_value'