我有一个vms.json文件
[
{
"name": "jms1",
"port1": 24000,
"port2": 25000,
"port3": 26000
},
{
"name": "jms2",
"port1": 24001,
"port2": 25000,
"port3": 26001
}
]
我有一个port_script.sh脚本,它接受[name] [port1] [port2] [port3]作为编号参数。
我可以运行这个jq命令来获取键,但我需要获取值。
jq -r -c '.[] |keys' vms.json
["port1","name","port2","port3"]
["port1","name","port2","port3"]
我不知道如何使用这个输出来获取相关的值。如果我能够得到这些值,我应该能够通过 xargs 将它们传递到我的脚本中。
非常感谢您的帮助!
附加信息:port_script.sh
#!/bin/bash
name=$1
port1=$2
port2=$3
port3=$4
vagrant ssh ${name} -- \
-L ${port1}:127.0.0.1:${port1} \
-R ${port2}:127.0.0.1:${port2} \
-L ${port3}:127.0.0.1:${port3}
应用 Santiago 和 Peak 的回应 - 这对我有用。
eval "$(jq -r '.[] | ["./port_script.sh"] + [.name, .port1, .port2, .port3 | @sh] | join(" ")' vms.json)"