首页 > 解决方案 > jq 多个参数

问题描述

给定我的 JSON 对象data.json

{
    "prod": {
        "apps": {
            "myapp": {"cloudfront_id":"BINGO-PROD"}
        }
    },
    "stg": {
        "apps": {
            "myapp": {"cloudfront_id":"BINGO-STG"}
        }
    }
}

jq并在 bash 中给出以下内容:

#!/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- 有什么想法为什么?

标签: jsonjq

解决方案


jq 1.5 不支持.key.["key"]语法(虽然 1.6 支持)。把点放在前面[$app],你就可以开始了:

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

推荐阅读