我有下面的yaml,我想替换命令字段
有
apiVersion: batch/v1
kind: Job
metadata:
name: test004
spec:
template:
spec:
containers:
- name: "eee"
image: "test"
command: ["a", "b", "c"]想要
apiVersion: batch/v1
kind: Job
metadata:
name: test004
spec:
template:
spec:
containers:
- name: "eee"
image: "test"
command: ["a", "b", "c", "d"]yq -i n --style myfile.yaml 'spec.template.spec.containers[0].command' "["a", "b", "c","d"]"是否有一种方法可以用yq来实现这一点,我尝试使用样式但没有成功,如果我将它更改为简单的字符串,它会工作,但是当我想传递完整数组时,有什么想法吗?
发布于 2021-02-10 14:40:31
您可以使用字段[+]符号来表示在yq v3中追加字段。所以你的命令会导致
yq --style double w -i myfile.yaml 'spec.template.spec.containers[0].command[+]' "c"上面的命令将条目"c"附加到数组中。
或者,如果您想要更新整个数组command,可以在v4中完成。请注意,这将以单独的行创建数组条目,而不是在OP中显示。请参阅YAML多线阵列
yq e '.spec.template.spec.containers[0].command |= ["a", "b", "c","d"] | ..style="double"' yaml注意,yq v4已经存在,并且支持强大的路径表达式和操作。有关说明,请参阅从v3升级
https://stackoverflow.com/questions/66138474
复制相似问题