2

我的 YAML 文件中有此代码用于 Azure 管道:

steps:
- bash: |
    echo $(date +%Y)
    echo "##vso[task.setvariable variable=buildName]$(date +%Y)_$(date +%m)_$(Build.BuildNumber)_v3.7"
    echo $BUILDNAME

第一个echo正确打印2020,但第三个打印$(date +%Y)_$(date +%m)_4728573844_v3.7。如您所见,这里的年份和月份没有转换为值。为什么?

4

1 回答 1

5

这是由于 的限制而引起的预期动作variable

要从脚本设置变量,请使用 task.setvariable 日志记录命令。这不会更新环境变量,但它确实使新变量可用于同一作业中的下游步骤。

简而言之,当您在Bashtask.setvariable任务中使用命令新建一个变量时,您创建的变量在当前 Bash 任务中将不可用。它仅在后续步骤中可用。

所以,在这里,当你添加另一个Bash任务和echo你创建的这个变量时buildName。您将看到它已成功创建:

steps:
- bash: |
    echo $(date +%Y)
    echo '##vso[task.setvariable variable=buildName]$(date +%Y)_$(date +%m)_$(Build.BuildNumber)_v3.7'

- bash: |
    echo $(buildName)

在此处输入图像描述

于 2020-02-26T02:11:11.810 回答