设置管道变量包含无关的双引号或单引号

uio*_*rty 15 continuous-integration azure-devops azure-pipelines

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

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

然而,每当我回显该变量时,它就会看起来像这样:

https://google.com"

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

Kev*_*SFT 8

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

steps:
- script: |
     echo ##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL)
  displayName: 'Run a one-line script'

- script: |
    echo $(BASE_URL)
Run Code Online (Sandbox Code Playgroud)

那么BASE_URL变量将不包含引号。

在此输入图像描述


Gar*_*ing 6

正如kap 的回答一样,我本周看到了相同的行为,并通过关闭变量输出行周围的 bash 调试来解决,例如:

set +x
echo "##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL)"
set -x
Run Code Online (Sandbox Code Playgroud)