yq添加具有名称和子字段的数组元素



我得到了这个test.yaml:

volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log

并希望使用Goyq-https://github.com/mikefarah/yq/

volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name: sys
mountPath: /sys

我真的无法理解它-使用:

yq eval '.volumes |= (. + {"name":{"name":"sys"}})' test.yaml我差不多得到了,但第三个字段名不见了(应该是name: sys,但它只是name:(

volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name:
mountPath: /sys

我摆弄了一段时间,但不能使它工作。

您可以使namemountPath出现在同一级别:

yq '.volumes += [{"name": "sys", "mountPath": "/sys"}]' test.yaml
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name: sys
mountPath: /sys

或者你可以使它们嵌套,缺少";接合";值:

yq '.volumes += [{"name": {"mountPath": "/sys"}}]' test.yaml
volumes:
- name: var-log
hostPath:
path: /var/log
- name: dev-log
hostPath:
path: /dev/log
- name:
mountPath: /sys

最新更新