Bash

僅在使用變數時從 JQ 命令獲取空值

  • November 25, 2022

我正在嘗試使用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_KEYdata

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

請注意在 下提取鍵值的語法data

.data."$key"如果鍵字面意思是 ,則使用會起作用$key。如果沒有這把鑰匙,你自然會找null回來。

引用自:https://unix.stackexchange.com/questions/726188