【发布时间】:2020-04-02 02:08:12
【问题描述】:
我想获取具有“server.sh”值的 IP。我当前的脚本获取所有 IP
test.json
{
"nodes": {
"test1.local": {
":ip": "192.168.56.30",
":server": "server.sh",
":client": "client.sh"
},
"test2.local": {
":ip": "192.168.56.31",
":server": "server.sh",
":client": "client.sh"
},
"test3.local": {
":ip": "192.168.56.32",
":client": "client.sh"
}
}
}
test.sh
ips=`jq -c '.nodes | to_entries | map(.value.":ip")| map_values(.+":4648")' test.json`
echo $ips
["192.168.56.30:4648","192.168.56.31:4648","192.168.56.32:4648"]
【问题讨论】:
-
请注意,
echo $ips天生就有缺陷。 总是引用你的扩展:echo "$ips";请参阅 BashPitfalls #14 和 Stack Overflow 问题 I just assigned a variable, butecho $variableshows something else。 -
...强烈推荐使用
ips=$(jq ...),而不是传统的反引号命令替换语法。