首页 > 解决方案 > Azure Yaml 管道表达式;${{}} 与 $()

问题描述

在阅读了azure yaml pipelines中的Expressions${{}}文档后, and的语法$[]得到了很好的解释。但还有第三种,即$()。我不清楚为什么需要它以及它究竟做了什么。例如,在该文档的某处有以下示例

jobs:
- job:
  variables:
    a: $[counter(format('{0:yyyyMMdd}', pipeline.startTime), 100)]
  steps:
  - bash: echo $(a)

为什么我们不能将变量打印a- bash: echo $[a]

标签: azureazure-pipelines

解决方案


为什么我们不能将变量 a 打印为 - bash: echo $[a]?

那是因为建议的运行时表达式变量仅在运行时扩展,它不会被评估。

因此,如果我们使用语法类型bash: echo $[a],它将是扩展表达式a,而不是评估 的值a

您可以查看文档了解变量语法以获取更多详细信息:

Azure Pipelines 支持三种不同的方式来引用变量:宏、模板表达式和运行时表达式。每种语法都可以用于不同的目的,并且有一些限制。

大多数文档示例使用宏语法 ( $(var))。在运行时处理具有宏语法的变量。运行时发生在模板扩展之后。

您可以对在运行时扩展的变量($[variables.var])使用运行时表达式语法。

此外,当我们获取静态变量或预定义变量的值时,宏将是一个不错的选择。

希望这可以帮助。


推荐阅读