我正在尝试将新条目附加到以下 yaml:
destinations:
- namespace: ns1
server: https://kubernetes.default.svc
我期望的是:
destinations:
- namespace: ns1
server: https://kubernetes.default.svc
- namespace: ns2
server: https://kubernetes.default.svc-
- namespace: ns3
server: https://kubernetes.default.svc
我可以得到的是,如果我喜欢这个
yq -i '.spec.destinations += [{"namespace": "zi-test-customer", "server": "https://kubernetes.default.svc"},{"namespace": "zi-test-customer2", "server": "https://kubernetes.default.svc"}]' file.yaml
但如果我从环境变量中获取列表,我会得到错误的列表
我得到的是:
destinations:
- namespace: ns1
server: https://kubernetes.default.svc
- {"namespace": "ns2", "server": "https://kubernetes.default.svc"}
- {"namespace": "ns3", "server": "https://kubernetes.default.svc"}
如果我这样做
NS=[{"namespace": "ns2", "server": "https://kubernetes.default.svc"},{"namespace": "ns3", "server": "https://kubernetes.default.svc"}]
yq -i '.spec.destinations += env(NS)' file.yaml
如何正确地从环境变量中提取值?
您看到的“错误结果”只不过是一种不同的表示。您正在导入 JSON 格式的列表,并且其“样式”被保留。但实际存储的数据在您的预期结果和“错误”结果中是相同的。
如果要删除样式,mikefarah/yq提供了
style
操作符。通过将其设置为空字符串来删除它: