首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用yq更新yaml数组

使用yq更新yaml数组
EN

Stack Overflow用户
提问于 2021-02-10 14:07:40
回答 1查看 5.6K关注 0票数 1

我有下面的yaml,我想替换命令字段

代码语言:javascript
复制
apiVersion: batch/v1
kind: Job
metadata:
  name: test004
spec:
  template:
    spec:
      containers:
        - name: "eee"
          image: "test"
          command: ["a", "b", "c"]

想要

代码语言:javascript
复制
apiVersion: batch/v1
kind: Job
metadata:
  name: test004
spec:
  template:
    spec:
      containers:
        - name: "eee"
          image: "test"
          command: ["a", "b", "c", "d"]
代码语言:javascript
复制
yq  -i n --style  myfile.yaml 'spec.template.spec.containers[0].command' "["a", "b", "c","d"]"

是否有一种方法可以用yq来实现这一点,我尝试使用样式但没有成功,如果我将它更改为简单的字符串,它会工作,但是当我想传递完整数组时,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 14:40:31

您可以使用字段[+]符号来表示在yq v3中追加字段。所以你的命令会导致

代码语言:javascript
复制
yq --style double w -i myfile.yaml 'spec.template.spec.containers[0].command[+]' "c"

上面的命令将条目"c"附加到数组中。

或者,如果您想要更新整个数组command,可以在v4中完成。请注意,这将以单独的行创建数组条目,而不是在OP中显示。请参阅YAML多线阵列

代码语言:javascript
复制
yq e '.spec.template.spec.containers[0].command |= ["a", "b", "c","d"] | ..style="double"' yaml

注意,yq v4已经存在,并且支持强大的路径表达式和操作。有关说明,请参阅从v3升级

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66138474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档