首页 > 解决方案 > azure devops - 如何使用环境变量在任务中创建新变量?

问题描述

我可以在任务中获取新的字符串变量但是如果这个新变量中有环境变量,它会失败我需要在任务中使用curl结合API和环境变量来获取新变量。

For Simple Example
//get string variable in task it work
- task: Bash@3
  displayName: foovariable
  inputs:
    targetType: 'inline'
    script: |
      FOO="FOOTEST"
      echo "##vso[task.setvariable variable=FOO]$FOO"
- task: Bash@3
  displayName: echofoo
  inputs:
    targetType: 'inline'
    script: |
      echo "$(FOO)"
      //print FOOTEST

//string with variables in new variables then it will fail
variables:
  NAME: Eddy

steps:
- task: Bash@3
  displayName: foovariable
  inputs:
    targetType: 'inline'
    script: |
      Hello="Hi $(NAME)"
      echo "##vso[task.setvariable variable=HELLO]$HELLO"
- task: Bash@3
  displayName: echofoo
  inputs:
    targetType: 'inline'
    script: |
      echo "$(Hello)"
      //I Need it to show "Hi Eddy"

请帮我修改语法 谢谢

标签: azure-devopsyamlazure-pipelinespipeline

解决方案


您可以尝试不要将调用的环境变量放在双引号中。像这样:

- task: Bash@3
  displayName: foovariable
  inputs:
    targetType: 'inline'
    script: |
      Hello="hi "$NAME
      echo "##vso[task.setvariable variable=HELLO]$Hello"
- task: Bash@3
  displayName: echofoo
  inputs:
    targetType: 'inline'
    script: |
      echo "$(Hello)"

在 echofoo 步骤中可以看到,它可以成功打印 $(Hello):

在此处输入图像描述


推荐阅读