【问题标题】:Does Azure DevOps remove quotation marks when setting a pipeline variable via a script?通过脚本设置管道变量时,Azure DevOps 是否会删除引号?
【发布时间】:2020-08-27 23:14:34
【问题描述】:

我必须在我的 Azure DevOps 管道中为 ARM 模板设置一个数组。我这样设置我的变量:


$foo = '["' + 'bar' + '"]'
Write-Host $foo
#######Assign Variables with Correct Value in pipeline
Write-Host "##vso[task.setvariable variable=fooVariableInPipeline]$foo"

$foo 的值很好,如预期的那样是 ["bar"]。 但是当我在设置变量后检查下一个任务中的值时,它会删除引号并将值显示为 [bar]。

这很奇怪,我想知道是我还是错误?有什么解决方法吗?

目前,我已经直接使用 powershell 代码更新了我的文件。

【问题讨论】:

  • 你能告诉我们接下来的任务是什么样的吗?
  • 这个问题怎么样?下面的答案是否解决了您的问题,如果是,您可以 Accept it as an Answer ,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。

标签: powershell azure-devops arm-template


【解决方案1】:

通过脚本设置管道变量时,Azure DevOps 是否删除引号?

此问题并非来自 azure devops,而是取决于您下一个任务的语法。

如果我使用command line 任务来输出该变量,它可以正常工作:

echo $(fooVariableInPipeline)

输出:

但是,如果我们使用powershell任务输出它,它会去掉引号:

Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"

输出:

要解决这个问题,我们需要用单引号将变量括起来,使其成为文字字符串,例如:

$Testfoo= '$(fooVariableInPipeline)'

Write-Host "Testfoo is $Testfoo"

现在,它工作正常:

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    你可以试试这里的字符串:

    $foo = @"
        ["bar"]
    "@
    

    【讨论】:

      【解决方案3】:

      我自己也遇到过这个问题。

      一种解决方法是使用两个双引号。

      在PowerShell中:

      $foo -replace '"', '""'
      

      【讨论】:

        猜你喜欢
        • 2021-11-23
        • 2020-06-06
        • 2021-06-08
        • 2021-05-15
        • 2021-05-11
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多