使用 yq version4 更新 yaml 文件

问题描述

我有以下代码适用于 yq 3,当我尝试升级到 yq4 时失败

这适用于 yq3 yq w -i dep.yaml 'spec.spec.image' $(MY_VAL)

在 yq4 上我得到错误,它不知道w我怎样才能让它工作 我没有找到任何可以帮助我的案例的匹配示例

https://mikefarah.gitbook.io/yq/upgrading-from-v3

解决方法

查看 migration guide 的“更新/编写文档”部分。

以下命令应该适用于您使用 yq 版本 4 的任务:

dep.yaml 执行前

a:
  b: 1
spec:
  spec:
    image: image_old.jpg
c:
  d: 2

MY_VAL="image_new.jpg" yq -i e '.spec.spec.image = strenv(MY_VAL)' dep.yaml

dep.yaml 执行后

a:
  b: 1
spec:
  spec:
    image: image_new.jpg
c:
  d: 2