我有以下檔案: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"]
所有我想到的東西。不成功。如果有人知道如何同時決議引號和變數,我將不勝感激,問候。
uj5u.com熱心網友回復:
您正在嘗試使用字串解釋構建 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 值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484527.html