helm show chart输出经jq解析报错,如何获取version属性?
Helm Show Chart 转 JSON 解析失败问题解决
问题
执行以下命令时触发jq解析错误:
helm show chart https://artifactory.vvr.com/artifactory/helm-release-local/jaeger/jaeger-assembly/jaeger-assembly-1.0.0.tgz -n test | jq .
错误信息:
parse error: Invalid numeric literal at line 1, column 11
helm show chart的实际输出为YAML格式:
apiVersion: v1 appVersion: 1.0.0 dependencies: - name: jaeger repository: https://dependencies.vvr.com/artifactory/helm//jaegertracing version: 0.44.0 description: aeger Assembly name: jaeger-assembly version: 1.0.0
错误原因
helm show chart默认输出YAML格式数据,但jq是仅支持JSON解析的工具,YAML语法与JSON不兼容,导致jq无法识别输入结构,抛出解析错误。
修复方案
需要先将YAML转换为JSON,再用jq处理,以下是两种可行方案:
方案1:使用yq工具(推荐)
yq是专门处理YAML的工具,支持一键转JSON,结合jq提取版本:
helm show chart https://artifactory.vvr.com/artifactory/helm-release-local/jaeger/jaeger-assembly/jaeger-assembly-1.0.0.tgz -n test | yq -o json | jq '.version'
若仅需提取version,可直接用yq完成,无需jq:
helm show chart https://artifactory.vvr.com/artifactory/helm-release-local/jaeger/jaeger-assembly/jaeger-assembly-1.0.0.tgz -n test | yq '.version'
方案2:使用Python内置模块(无额外依赖)
如果系统已安装Python,可利用pyyaml和json模块完成转换:
helm show chart https://artifactory.vvr.com/artifactory/helm-release-local/jaeger/jaeger-assembly/jaeger-assembly-1.0.0.tgz -n test | python3 -c "import yaml, json; print(json.dumps(yaml.safe_load(input())))" | jq '.version'
内容的提问来源于stack exchange,提问作者Starbucks Admin
相关产品推荐
相关产品推荐

