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

时间:2018-06-14 04:23:41

标签: bash jq

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

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"}

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

1 个答案:

答案 0 :(得分:3)

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

这里的关键是访问包含.的参数,将它们包装在[]

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

现在根据需要调用args

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