如何在 JQ 中转义双引号并使用 env var

红色xlus

我有以下文件: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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章