在下面的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"}
我的程序需要为随机选择的属性获取值,因此在运行时之前不知道属性名称(因此尝试使用参数的原因)
答案 0 :(得分:3)
你的想法是正确的,但你不需要导出变量/在这里使用环境变量。只需传入参数并使用内部jq
逻辑从shell导入变量。
这里的关键是访问包含.
的参数,将它们包装在[]
getProperty(){
jq --arg namearg "$1" '.[$namearg]' < json
}
现在根据需要调用args
getProperty "first.name"
"Adam"
getProperty "last.name"
"Eve"