jq多个参数

时间:2019-05-20 10:38:02

标签: json jq

给出我在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-为什么有任何想法?

1 个答案:

答案 0 :(得分:2)

jq 1.5不支持.key.["key"]语法(但1.6支持)。将点放在[$app]之前,就可以了:

.[$env].apps[$app].cloudfront_id