我正在尝试使用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
回来。