shell 如何在jq中添加变量

ni65a41a  于 2022-11-16  发布在  Shell
关注(0)|答案(2)|浏览(391)

我尝试在从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"
    }

使用变量获取所需信息的正确命令是什么?

whitzsjs

whitzsjs1#

$ 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"
jobtbby3

jobtbby32#

您可以不使用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

相关问题