给出我在data.json
中的JSON对象:
{
"prod": {
"apps": {
"myapp": {"cloudfront_id":"BINGO-PROD"}
}
},
"stg": {
"apps": {
"myapp": {"cloudfront_id":"BINGO-STG"}
}
}
}
并在bash中给出以下jq
:
#!/bin/bash
ENV="prod"
APP="myapp"
OUTPUT=$(cat data.json | jq -rc \
--arg env "${ENV}" \
--arg app "${APP}" \
'.[$env] .apps .[$app] .bar')
此操作失败,并显示以下错误:
jq: error: syntax error, unexpected '[', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.[$env] .apps .[$app] .cloudfront_id
jq: 1 compile error
如果我仅删除[$app]
并替换为myapp
,则效果很好。我正在运行jq-1.5
-为什么有任何想法?
答案 0 :(得分:2)
jq 1.5不支持.key.["key"]
语法(但1.6支持)。将点放在[$app]
之前,就可以了:
.[$env].apps[$app].cloudfront_id