Azure生成管道Bash脚本现在可以正确设置生成变量

时间:2019-07-22 10:17:18

标签: bash azure azure-pipelines

我的构建管道中有一个Bash脚本,该脚本将根据触发该构建的分支来设置一些构建变量。但是,当我尝试在另一个bash脚本中回显这些变量时,其中某些变量不会回显。

设置环境变量:

if [[ $(Build.SourceBranchName) == 'develop' ]]; then
  echo $TagVersion
  echo $(Build.BuildId)

    echo '##vso[task.setvariable variable=AppVersion;]$TagVersion'
    echo '##vso[task.setvariable variable=ChangeSet;]$(Build.BuildId)'
    echo '##vso[task.setvariable variable=Environment;]DEVTEST'
    echo '##vso[task.setvariable variable=BuildConfig;]Debug'

fi

输出为:

v1.4.0 
7090

设置版本:

echo $(AppVersion)
echo $(ChangeSet)
echo $(Environment)
echo $(BuildConfig)

这将输出

7090
DEVTEST
Debug

为什么现在将AppVersion写入控制台?

1 个答案:

答案 0 :(得分:0)

$()语法在bash看到之前由代理评估,而$ var由bash评估。这就是正确分配ChangeSet的原因。

echo '##vso[task.setvariable variable=AppVersion;]$TagVersion'命令使用单引号('),可阻止bash解释内容。要展开变量,请使用双引号("