If statement yaml管道中的“eq”和“ne”等条件不起作用

If statement yaml管道中的“eq”和“ne”等条件不起作用,if-statement,build,yaml,azure-pipelines,equals,If Statement,Build,Yaml,Azure Pipelines,Equals,我创建了一个管道构建变量svctag,并将其值赋给空字符串。现在尝试在yaml文件中的作业内执行下面的脚本。每次打印时,svctag都不是空的。不知道我做错了什么。 请帮忙 - ${{ if eq('$(svctag)', '') }}: - script: echo 'svctag is blank' - ${{ if ne('$(svctag)', '') }}: - script: echo 'svctag is not blank' 据我所知,这种格式只适用于YAML模板。

我创建了一个管道构建变量svctag,并将其值赋给空字符串。现在尝试在yaml文件中的作业内执行下面的脚本。每次打印时,svctag都不是空的。不知道我做错了什么。 请帮忙

- ${{ if eq('$(svctag)', '') }}:
   - script: echo 'svctag is blank'
- ${{ if ne('$(svctag)', '') }}:
   - script: echo 'svctag is not blank'

据我所知,这种格式只适用于YAML模板。现在,问题是您使用的名为method的变量不正确

您应该使用格式变量['svctag']而不是$svctag来访问前面在使用YAML时声明的变量

因此,您应该将脚本更改为

  - ${{ if eq(variables['svctag'], '') }}:
    - script: echo it is true 
  - ${{ if ne(variables['svctag'], '') }}:
    - script: echo it is false
这是我这边的输出

另一种解决方案是在参数下定义svctag:

然后在步骤中使用参数:

  steps:
  - ${{ if eq(parameters.svctag, '') }}:
    - script: echo it is true
  - ${{ if ne(parameters.svctag, '') }}:
    - script: echo it is false

注意:请使用parameters.svctag。

据我所知,此格式仅适用于YAML模板。现在,问题是您使用的名为method的变量不正确

您应该使用格式变量['svctag']而不是$svctag来访问前面在使用YAML时声明的变量

因此,您应该将脚本更改为

  - ${{ if eq(variables['svctag'], '') }}:
    - script: echo it is true 
  - ${{ if ne(variables['svctag'], '') }}:
    - script: echo it is false
这是我这边的输出

另一种解决方案是在参数下定义svctag:

然后在步骤中使用参数:

  steps:
  - ${{ if eq(parameters.svctag, '') }}:
    - script: echo it is true
  - ${{ if ne(parameters.svctag, '') }}:
    - script: echo it is false
注意:请使用parameters.svctag