如何在jq解析中使用环境变量参数

普拉巴·维杰

在下面的bash代码中,我将null作为值而不是实际值。jq 1.5在Linux OS中使用。

getProperty(){
    export PROP=$1
    export value_found=`cat my.json | jq '."env.PROP"'`
    echo "$1 = $value_found"
}

getProperty "first.name"
getProperty "last.name"

内容 my.json

{"first.name":"Adam", "last.name":"Eve"}

我的程序需要获取随机选择的属性的值,因此在运行时之前不知道属性名称(因此,尝试使用参数的原因)

伊尼安

你的想法是对的,但你并不需要导出变量/在这里使用的环境变量。只需传入参数并使用内部jq逻辑从shell导入变量即可。

此处的关键是访问包含的参数.,将其包装[]

getProperty(){
    jq --arg namearg "$1" '.[$namearg]' < json
}

然后根据需要使用args进行调用

getProperty "first.name"
"Adam"
getProperty "last.name"
"Eve"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章