我有以下 yaml,我想替换命令字段
有
apiVersion: batch/v1
kind: Job
metadata:
name: test004
spec:
template:
spec:
containers:
- name: "eee"
image: "test"
command: ["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
想
apiVersion: batch/v1
kind: Job
metadata:
name: test004
spec:
template:
spec:
containers:
- name: "eee"
image: "test"
command: ["a", "b", "c", "d"]
Run Code Online (Sandbox Code Playgroud)
yq -i n --style myfile.yaml 'spec.template.spec.containers[0].command' "["a", "b", "c","d"]"
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标yq,我尝试使用样式但没有成功,如果我将其更改为简单字符串,它可以工作,但当我想传递完整数组时则不行,知道吗?
您可以使用字段[+]表示法在 yq v3 中附加字段。所以你的命令结果是
yq --style double w -i myfile.yaml 'spec.template.spec.containers[0].command[+]' "c"
Run Code Online (Sandbox Code Playgroud)
上面的命令将条目附加"c"到数组中。
或者,如果您想更新整个数组,command您可以在 v4 中执行。请注意,这会在单独的行中创建数组条目,而不是OP中显示的行。请参阅YAML 多行数组
yq e '.spec.template.spec.containers[0].command |= ["a", "b", "c","d"] | ..style="double"' yaml
Run Code Online (Sandbox Code Playgroud)
请注意,yq v4 已经存在并且支持更强大的路径表达式和操作。有关说明,请参阅从 v3 升级
| 归档时间: |
|
| 查看次数: |
11250 次 |
| 最近记录: |