【问题标题】:Issue With Yaml Variable Assignment With Bash使用 Bash 进行 Yaml 变量赋值的问题
【发布时间】:2021-10-07 23:08:54
【问题描述】:

尝试在 yaml 文件中使用以下语法分配变量时遇到问题。以下代码取自 Microsoft Doc on Define variablesUnderstand variable syntax 部分:

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

具体来说,我发现问题出在语法 '##vso[task.setvariable variable=one]secondValue' 的区域中 注意:我没有使用直接写入上述行的字符串,而是使用语法为 $variableName 的 bash 变量代替 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"

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

【问题讨论】:

  • 您在谈论问题问题,而没有说明您有什么问题。
  • 我已经更新了我的问题以包括手头问题的示例。感谢您指出这一点。

标签: bash azure-devops yaml azure-pipelines azure-pipelines-yaml


【解决方案1】:

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

            echo "##vso[task.setvariable variable=one]$valueTwo"

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 2015-12-03
    • 1970-01-01
    • 2022-01-10
    • 2011-09-23
    • 2016-06-01
    • 2010-12-29
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多