设置管道变量包含多余的双引号或单引号

时间:2020-07-14 19:28:53

标签: azure-devops continuous-integration azure-pipelines

我有以下命令在Azure DevOps yaml中设置BASE_URL变量:

- script: |
    echo "##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL)"
  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))

但是,只要我回显该变量,它就会像这样:

https://google.com"

如果我用单引号替换它,或者将$(PROD-CONTAINER-URL)放在引号的内部或外部,则问题仍然存在。我该如何解决这个问题以及其原因是什么?

2 个答案:

答案 0 :(得分:2)

要在Bash脚本中解决此问题,您需要删除双引号或单引号。

Successful!

然后steps: - script: | echo ##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL) displayName: 'Run a one-line script' - script: | echo $(BASE_URL) 变量将不包含引号。

enter image description here

答案 1 :(得分:1)

使用powershell修复。必须是我不知道的Bash逃逸问题:

- powershell: |
    Write-Host "##vso[task.setvariable variable=BASE_URL;]$(TEST-CONTAINER-URL)"
  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'develop'))
  displayName: "Initialize test base url variable"