Bash 中的 Yaml 变量赋值问题

Dan*_*ton 5 bash yaml azure-devops azure-pipelines azure-pipelines-yaml

我在尝试在 yaml 文件中使用以下语法分配变量时遇到问题。以下代码取自 Microsoft 文档中定义变量的理解变量语法部分:

variables:
- name: one
  value: initialValue 

steps:
  - script: |
      echo ${{ variables.one }} # outputs initialValue
      echo $(one)
    displayName: First variable pass
  - bash: echo '##vso[task.setvariable variable=one]secondValue'
    displayName: Set new variable value
  - script: |
      echo ${{ variables.one }} # outputs initialValue
      echo $(one) # outputs secondValue
    displayName: Second variable pass
Run Code Online (Sandbox Code Playgroud)

具体来说,我发现问题出在语法注释'##vso[task.setvariable variable=one]secondValue' :我没有使用直接写入上面一行的字符串,我使用的是 bash 变量,其语法$variableName代替secondValue

问题是:

variables:
- name: one
  value: "initialValue" 

steps:
- task: Bash@3
    inputs:
        targetType: 'inline'
        script: |
            valueTwo="New Value"
            echo '##vso[task.setvariable variable=one]$valueTwo'
    displayName: "Change Variable"

- task: Bash@3
    inputs:
        targetType: 'inline'
        script: |
            echo $(one)
    displayName: "Check Variable Has Changed"
Run Code Online (Sandbox Code Playgroud)

预期产出:New Value 实际产出:$valueTwo

Arm*_*ali 3

这里调用的参数扩展不在单引号内执行,所以使用双引号:

            echo "##vso[task.setvariable variable=one]$valueTwo"
Run Code Online (Sandbox Code Playgroud)