You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用yq修改YAML中键名含点的字符串键值

yq 访问含点号键名的正确写法

问题根因

yq 默认将路径表达式中的.作为多层级键的分隔符,直接用.\"image.tag\"的写法无法将image.tag识别为单个完整键名,加上误用:作为赋值符,才会导致修改效果不符合预期。

正确执行命令

推荐用strenv()函数读取环境变量,避免引号嵌套转义出错(主流v4版本mikefarah/yq均支持该写法):

# 先设置TAG变量值,再执行修改
export TAG=你的目标镜像版本
yq eval --inplace '.spec.chart.values["image.tag"] = strenv(TAG)' values.yaml

如果不想用strenv(),直接拼接shell变量的正确写法如下,注意严格匹配引号转义层级:

yq eval --inplace ".spec.chart.values[\"image.tag\"] = \"$TAG\"" values.yaml

写法规则说明

  • 所有含特殊字符(点、空格、开头为横杠等)的单个键名,必须用["完整键名"]的方括号形式包裹访问,反斜杠转义点号的写法在yq中不生效
  • yq 路径表达式的赋值运算符为=,:是构造新键值对的语法,不能用来更新已有路径的值

执行后YAML文件对应字段会被正确更新,效果参考:

spec:
  chart:
    values:
      image.tag: 你设置的TAG对应值

内容的提问来源于stack exchange,提问作者Revital Eres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:09:23