我正在尝试检查“运行时设置”的变量的值。 我猜那是空值。 我的尝试:
variables:
- name: MailPass
${{ if eq( variables['SendMail'], 'Yes' ) }}:
value: "Si"
${{ else }}:
value: "No"
SendMail 是运行时设置的变量(在 azure devops web 的运行对话框中),并且 MailPass 始终获得“否”值,无论我为 SendMail 变量设置什么值。
进行此比较的正确语法是什么? (我也尝试过
variables.SendMail
语法,但结果相同)
当您在 Pipeline UI 中设置变量时,它将在运行时扩展。但是if表达式会在编译时进行判断。
在这种情况下,变量会将空值传递给 If 表达式。
作为解决方法,我们可以使用脚本根据变量值设置变量。
这是一个例子:
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
if( "$(SendMail)" -eq "yes" )
{
echo "##vso[task.setvariable variable=MailPass;]Si"
}
else
{
echo "##vso[task.setvariable variable=MailPass;]No"
}
- powershell: echo $(MailPass)