如何使用多个环境变量通过jq从JSON中获取数据
解决jq双变量访问JSON属性的语法问题
你的命令报错是因为jq语法使用错误,当用变量作为对象键名时,不能写成.[$v1].[$v2],正确写法有两种:
写法一:连续索引访问
直接用连续方括号索引嵌套访问:
VAR1="a1" VAR2="b1" jq --arg v1 "$VAR1" --arg v2 "$VAR2" '.[$v1][$v2]' data.json
写法二:管道分步访问
通过管道符将第一步结果传递给第二步,再用变量索引:
VAR1="a1" VAR2="b1" jq --arg v1 "$VAR1" --arg v2 "$VAR2" '.[$v1] | .[$v2]' data.json
原理说明
jq中,.后面直接跟键名(比如.b1)是针对字面量键名的写法;如果键名是变量(比如$v2),必须用[]索引语法。你之前的写法错误混用了两种语法,导致无法正常解析。
内容的提问来源于stack exchange,提问作者KHP
相关产品推荐
相关产品推荐

