json - 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
- 有什么想法为什么?
解决方案
jq 1.5 不支持.key.["key"]
语法(虽然 1.6 支持)。把点放在前面[$app]
,你就可以开始了:
.[$env].apps[$app].cloudfront_id
推荐阅读
- reactjs - React:我怎样才能让这个 React 组件写得更好更高效?
- ios - 从 iPhone 中删除我的帐户时,应用内购买是否有效?
- node.js - 从 api 获取数据时出现空白屏幕
- reactjs - 如何让 API 调用等到我们获得所需的数据?
- vaadin - Vaadin TextField 的值在快捷方式侦听器中不可用
- php - 在我的联系表格中发送消息没有任何意义
- javascript - Jest vue3:SyntaxError:意外的令牌“导出”(信号)
- windows - 如何获取不包含特定类型文件的文件夹/子文件夹列表?
- gradle - 在 Android Studio 中允许 HTTP 下载
- google-api - googleapi servicenetworking上的terraform后端500错误