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
这里调用的参数扩展不在单引号内执行,所以使用双引号:
echo "##vso[task.setvariable variable=one]$valueTwo"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |