通过脚本设置管道变量时,Azure DevOps 是否会删除引号?
Does Azure DevOps remove quotation marks when setting a pipeline variable via a script?
我必须在我的 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代码更新了我的文件。
你可以试试这里的字符串:
$foo = @"
["bar"]
"@
Does Azure DevOps remove quotation marks when setting a pipeline variable via a script?
这个问题不是来自 azure devops,而是取决于你下一个任务的语法。
如果我使用 command line
任务输出那个变量,它工作正常:
echo $(fooVariableInPipeline)
输出:
但是,如果我们用powershell
任务输出,会去掉引号:
Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"
输出:
要解决这个问题,我们需要用单引号将变量括起来,使其成为文字字符串,如:
$Testfoo= '$(fooVariableInPipeline)'
Write-Host "Testfoo is $Testfoo"
现在,它工作正常:
希望这对您有所帮助。
我自己 运行 进入这个问题。
解决方法是使用两个双引号。
在 powershell 中:
$foo -replace '"', '""'
我必须在我的 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代码更新了我的文件。
你可以试试这里的字符串:
$foo = @"
["bar"]
"@
Does Azure DevOps remove quotation marks when setting a pipeline variable via a script?
这个问题不是来自 azure devops,而是取决于你下一个任务的语法。
如果我使用 command line
任务输出那个变量,它工作正常:
echo $(fooVariableInPipeline)
输出:
但是,如果我们用powershell
任务输出,会去掉引号:
Write-Host "fooVariableInPipeline is $(fooVariableInPipeline)"
输出:
要解决这个问题,我们需要用单引号将变量括起来,使其成为文字字符串,如:
$Testfoo= '$(fooVariableInPipeline)'
Write-Host "Testfoo is $Testfoo"
现在,它工作正常:
希望这对您有所帮助。
我自己 运行 进入这个问题。
解决方法是使用两个双引号。
在 powershell 中:
$foo -replace '"', '""'