Bash
僅在使用變數時從 JQ 命令獲取空值
我正在嘗試使用
jq
解析一些 JSON 以允許我從 json 文件中獲取值。設置是我有一個 JSON 文件,如果我jq
通過手動輸入密鑰來執行我的命令,它將起作用。但是,當我嘗試使用 either--args
或 env 時,結果失敗了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>", }
首先假設數據是有效的 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
回來。