我想知道是否可以使用参数来构造字段名称jq.
例:
jq -rc \
--arg secret_name ${secret_name} \
--arg secret_value ${secret_value} \
'.data.$secret_name = "$secret_value"'
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我想使用参数值secret_name来创建一个键.data.这可能用jq吗?
示例数据:
secret_name=abc
secret_value=xyz
Run Code Online (Sandbox Code Playgroud)
jq运行JSON :
{
"apiVersion": "v1",
"data": {},
"kind": "Secret",
"metadata": {
"name": "kv-secrets",
"namespace": "default"
},
"type": "Opaque"
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
{
"apiVersion": "v1",
"data": {
"abc": "xyz"
},
"kind": "Secret",
"metadata": {
"name": "secrets"
},
"type": "Opaque"
}
Run Code Online (Sandbox Code Playgroud)
请记住,我打算运行原始命令来填充.data更多的键值对.
使用变量,您需要使用长[...]形式的键.您不需要在JSON过滤器中引用变量; 变量是字符串值.
jq -rc \
--arg secret_name "${secret_name}" \
--arg secret_value "${secret_value}" \
'.data[$secret_name] = $secret_value'
Run Code Online (Sandbox Code Playgroud)