【发布时间】:2022-10-25 12:17:03
【问题描述】:
我试图在从 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"
}
使用变量获取所需信息的正确命令是什么?
【问题讨论】:
-
请尝试添加引号
--arg v "$stack"。 -
@pmf 我试过了,得到以下错误email_f=$(cat profiles.json | jq --arg v "$stack" '.central[$v]email')回声$电子邮件错误:jq:错误:语法错误,意外 IDENT,期望 $end(Unix shell 引用问题?)在 <top-level>,第 1 行:.central[$v]email jq:1 编译错误
-
'.central[$v]email'- 您在电子邮件之前缺少一个句点。 -
您是否考虑过使用
jq -r '.central[.generic.category].email' profiles.json? Demo -
完美的!!这些东西有帮助,它现在可以工作了