Azure devops 通过echo somtimes设置变量会添加一个随机变量';最后

Azure devops 通过echo somtimes设置变量会添加一个随机变量';最后,azure-devops,Azure Devops,我有一个具有以下功能的bash脚本: # usage: setOutput <name> <value> function setOutput { echo "##vso[task.setvariable variable=$1]$2" } setOutput environment "dev" #用法:setOutput 函数集输出{ echo“##vso[task.setvariable=$1]$2” } 设置输出环境“dev” 这通常会将变量正确设置为EN

我有一个具有以下功能的bash脚本:

# usage: setOutput <name> <value>
function setOutput {
  echo "##vso[task.setvariable variable=$1]$2"
}

setOutput environment "dev"
#用法:setOutput
函数集输出{
echo“##vso[task.setvariable=$1]$2”
}
设置输出环境“dev”
这通常会将变量正确设置为
ENVIRONMENT=dev
——但是,有时会在末尾随机添加一个
'
,即
ENVIRONMENT=dev'


我多次尝试在管道上重新运行同一个提交,有时有效,有时无效。有什么想法吗?

我用你的样品测试过,可以正常显示

您可以尝试删除
dev
的双引号,以查看是否会发生这种情况

function setOutput {
  echo "##vso[task.setvariable variable=$1]$2"
}

setOutput environment dev

我用你的样品测试过,可以正常显示

您可以尝试删除
dev
的双引号,以查看是否会发生这种情况

function setOutput {
  echo "##vso[task.setvariable variable=$1]$2"
}

setOutput environment dev

基于@Hugh Lin-MSFT无法再现该问题的事实,我仔细观察了一下,发现了问题的实质:


在我的脚本开始时,我使用了:

set -ex
这导致出现两种回声:

+echo '##vso[task.setvariable variable=key]value'
##vso[task.setvariable variable=key]value
根据这两个值的顺序(因为第一个值被写入stderr,第二个值被写入stdout),有时该值被设置为正确的值,有时被设置为调试回显值。由于在最后添加了
,所以导出的输出也是如此


我的建议是:只处理这些echo命令的stdout,而不是stderr,或者为
set-x
添加一个特殊的过滤器。我删除了调试输出,现在它可以工作了。

基于@Hugh Lin-MSFT无法重现该问题的事实,我仔细查看了一下,发现了实际的问题:


在我的脚本开始时,我使用了:

set -ex
这导致出现两种回声:

+echo '##vso[task.setvariable variable=key]value'
##vso[task.setvariable variable=key]value
根据这两个值的顺序(因为第一个值被写入stderr,第二个值被写入stdout),有时该值被设置为正确的值,有时被设置为调试回显值。由于在最后添加了
,所以导出的输出也是如此


我的建议是:只处理这些echo命令的stdout,而不是stderr,或者为
set-x
添加一个特殊的过滤器。我删除了调试输出,现在它可以工作了。

谢谢,但我发现了问题所在。看到我贴的答案了吗?谢谢,但我发现了问题所在。看到我发布的答案谢谢在这里分享你的解决方案,你能接受你的解决方案吗?因此,它将有助于其他成员谁得到同样的问题,找到解决办法容易。祝你今天愉快:)谢谢你在这里分享你的解决方案,请接受你的解决方案好吗?因此,它将有助于其他成员谁得到同样的问题,找到解决办法容易。祝你今天愉快:)