簡體   English   中英

如何在jq中添加變量

[英]How to add a variable in jq

我試圖在從 json 文件中獲取信息時添加一個變量,如下所示。

stack=$(cat profiles.json | jq '.generic.category')

email=$(cat profiles.json | jq '.central.[Need to add $stack variable here].email')
echo $email
password=$(cat profiles.json | jq '.central.[Need to add $stack variable here].password')
echo $password

我嘗試了一些類似jq --arg v $stack '.central[$v]password ' 的東西,但它沒有用。

這就是我的profiles.json的樣子:

  "central": {
        "one": {
            "tenant": "xxx-yyy-zzz",
            "email": "xyz@gmail.com",
            "password": "1111"
         },
        "two": {
            "tenant": "aaa-bbb-ccc",
            "email": "xyz@gmail.com",
            "password": "2222"
         }
  },
  "generic": {
        "username": "root",
        "password": "xyz",
        "project": "ABC",
        "category": "two"
    }

使用變量獲取所需信息的正確命令是什么。

$ cat profiles.json
{
   "central": {
        "one": {
            "tenant": "xxx-yyy-zzz",
            "email": "xyz@gmail.com",
            "password": "1111"
         },
        "two": {
            "tenant": "aaa-bbb-ccc",
            "email": "xyz@gmail.com",
            "password": "2222"
         }
  },
  "generic": {
        "username": "root",
        "password": "xyz",
        "project": "ABC",
        "category": "two"
    }
}

$ jq --arg MYVAR one '.central[$MYVAR].password' profiles.json
"1111"

您可以不使用 shell 變量stack ,除非您想稍后在 shell 腳本中的不同位置使用它。

email=$(jq -r '.central[.generic.category].email' profiles.json)
echo $email
password=$(jq -r '.central[.generic.category].password' profiles.json)
echo $password

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM