我的构建管道中有一个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写入控制台?
答案 0 :(得分:0)
$()
语法在bash看到之前由代理评估,而$
var由bash评估。这就是正确分配ChangeSet的原因。
echo '##vso[task.setvariable variable=AppVersion;]$TagVersion'
命令使用单引号('
),可阻止bash解释内容。要展开变量,请使用双引号("
)