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

Azure DevOps管道${{ if eq() }}无法读取父yaml变量如何正确引用

问题原因

Azure DevOps 管道存在两种不同的变量解析时机:

  • ${{ }} 属于编译时表达式,在管道启动前、模板解析展开阶段就会执行
  • $(AAA) 属于运行时变量语法,只有管道实际运行到对应步骤时才会解析取值

你在编译时表达式里用了运行时的变量写法,自然无法正常读取到变量值。

正确写法

编译时表达式中引用变量直接用 variables.变量名 或者 variables['变量名'] 格式即可,修改后的test.yml代码如下:

steps:
  - script: |
      echo $(AAA)
  - ${{ if eq(variables['AAA'], '123') }}:
      - script: |
          echo OK

额外注意事项

如果你的变量是运行时才生成的(比如某个步骤输出的变量、或者手动触发管道时输入的变量没有设置编译时可见),这种编译时if判断是不会生效的,这时你需要改用运行时的条件判断,给步骤加condition属性:

steps:
  - script: |
      echo $(AAA)
  - script: |
      echo OK
    condition: eq(variables['AAA'], '123')

内容的提问来源于stack exchange,提问作者Shuhui Ke US

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:03