仅当使用变量时,JQ 命令的结果为 null

仅当使用变量时,JQ 命令的结果为 null

我正在尝试使用jq解析一些 JSON 来允许我从 json 文件中获取值。设置是我有一个 JSON 文件,如果我jq通过手动输入密钥来运行命令,它将起作用。但是,当我尝试使用或 env 时,结果--args失败。null

代码

stripped_string=$(echo $key | tr -d '"' | tr -d ',')
jq -r --arg str "${stripped_string}" '.data."$str"' 1password.json

我已经确认echo我得到了正确的值stripped_string,如果我$str用密钥替换它,它会工作得很好。

我怎样才能让这个命令作为它返回值的键jq来使用?stripped_string

编辑添加信息

示例$key “JON_CONSUMER_KEY”

缩短的 1password.json

"data": {
        "JON_CONSUMER_KEY": "<value here>",
}

答案1

首先假设数据是有效的 JSON,例如

{
   "data": { "JON_CONSUMER_KEY": "<value here>" }
}

...其中data是顶级密钥,我们可以使用用户提供的字符串获取该JON_CONSUMER_KEY密钥的解码(原始)值,如下所示:data

$ mykey=JON_CONSUMER_KEY
$ jq -r --arg key "$mykey" '.data[$key]' file
<value here>

请注意提取 下键值的语法data

.data."$key"如果密钥是,则使用会起作用字面上地 $key。如果没有这个钥匙,你自然会null回来。

相关内容