我有以下文件:data.txt
{
"1": {
"job": "Plumber",
"age": "23"
},
"2": {
"job": "SEO",
"age": "45"
}
}
我可以毫无问题地进行以下查询:
jq --raw-output '."2".job' data.txt
但是,在我正在做的脚本中,数字是从另一个命令中给出的,为了简单起见,类似于下一个。并且在执行它时,它并没有很好地解析变量或引号。所以结果为空。
ID=$(echo "2")
jq --raw-output '."$ID".job' README.md
我试过用 转义变量\
,用 转义引号,用\
转义两者\
。也可以使用--arg
和.["$env.ID"]
所有我想到的东西。不成功。如果有人知道如何同时解析引号和变量,我将不胜感激,问候。
您正在尝试使用字符串解释构建 JQ 过滤器,这通常是错误的做法。
相反,将数字作为参数传递给过滤器。
ID=2
jq --raw-output --arg x "$ID" '.[$x].job' data.txt
# jq --raw-output --argjson x "\"$ID\"" '.[$x].job' data.txt
# ID='"2"'
# jq --raw-output --argjson x "$ID" '.[$x].job' data.txt
--arg
将值编码为 JSON 字符串;--argjson
假定该值已经是 JSON 值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句