我有一個逗號分隔的 IP 地址字串(一個或多個)
nodes=192.168.56.111,192.168.56.112,192.168.56.113
使用jq,我想創建一個如下所示的 JSON 檔案:
{
"clusters": [
{
"nodes": [
{
"node": {
"hostnames": {
"manage": [
"192.168.56.111"
],
"storage": [
"192.168.56.111"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/sdb",
"destroydata": false
}
]
},
{
"node": {
"hostnames": {
"manage": [
"192.168.56.112"
],
"storage": [
"192.168.56.112"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/sdb",
"destroydata": false
}
]
},
{
"node": {
"hostnames": {
"manage": [
"192.168.56.113"
],
"storage": [
"192.168.56.113"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/sdb",
"destroydata": false
}
]
}
]
}
]
}
到目前為止我所擁有的:
nodes=192.168.56.111,192.168.56.112,192.168.56.113
jq --arg ip "$nodes" '.clusters[].nodes[].node.hostnames.manage |= ($ip | split(","))' <<<'{"clusters":[{"nodes":[{"node":{"hostnames":{"manage":[],"storage":[]},"zone":1},"devices":[{"name":"/dev/sdb","destroydata":false}]}]}]}'
這有兩個問題:
.clusters[].nodes[].node沒有被復制。.clusters[].nodes[].node.hostnames.storage不見了。
uj5u.com熱心網友回復:
您可以使用拆分結果map來創建以下陣列.clusters[0].nodes:
nodes=192.168.56.111,192.168.56.112,192.168.56.113
jq -R '
{clusters: [{nodes: (./"," | map({
node: {hostnames: {manage: [.], storage: [.]}, zone: 1},
devices: [{name: "/dev/sdb", destroydata: false}]
}))}]}
' <<< "$nodes"
{
"clusters": [
{
"nodes": [
{
"node": {
"hostnames": {
"manage": [
"192.168.56.111"
],
"storage": [
"192.168.56.111"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/sdb",
"destroydata": false
}
]
},
{
"node": {
"hostnames": {
"manage": [
"192.168.56.112"
],
"storage": [
"192.168.56.112"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/sdb",
"destroydata": false
}
]
},
{
"node": {
"hostnames": {
"manage": [
"192.168.56.113"
],
"storage": [
"192.168.56.113"
]
},
"zone": 1
},
"devices": [
{
"name": "/dev/sdb",
"destroydata": false
}
]
}
]
}
]
}
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/460577.html
