我想知道是否可以使用参数来构造字段名称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 数组中,我想根据节点的值选择一个数组元素,然后更新同一数组元素中的不同节点。例如在下面的 JSON 中:
{
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "Kubernetes",
"orchestratorRelease": "1.7",
"orchestratorVersion": "1.7.10",
"kubernetesConfig": {
"kubernetesImageBase": "gcrio.azureedge.net/google_containers/",
"clusterSubnet": "10.105.208.0/20",
"networkPolicy": "calico",
"nonMasqueradeCidr": "10.0.0.0/8",
"maxPods": 110,
"dockerBridgeSubnet": "172.17.0.1/16"
"addons": [
{
"name": "tiller",
"enabled": true
},
{
"name": "aci-connector",
"enabled": true
},
{
"name": "kubernetes-dashboard",
"enabled": true
},
{
"name": "rescheduler",
"enabled": true
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想禁用所有不是“重新调度程序”的插件,即为.enabled = false数组元素设置的插件,.properties.orchestratorProfile.kubernetesConfig.addons[]其中.name != "rescheduler". 我能算出的最接近的是
jq -r '.properties.orchestratorProfile.kubernetesConfig.addons[] |
select …Run Code Online (Sandbox Code Playgroud)