我正在VSTS中运行一个任务,该任务对上一步中的变量执行一些操作,然后我需要输出结果以用于将来的任务。我在Linux构建主机上运行的命令行任务中具有以下内容,但是稍后尝试与$(podName3)结合使用结果时运气不佳。
COMMAND="$(echo '$(pods)' | grep -oh -P '[^ ]*' | grep schema)"
##vso[task.setvariable variable=podName3]"$COMMAND"
我对此尝试了几种变种,但都无济于事,并且需要一些指导,因为这已经困扰了我太久了
答案 0 :(得分:10)
似乎语法不正确。
只需尝试以下格式:
COMMAND="$(echo '$pods' | grep -oh -P '[^ ]*' | grep schema)"
echo "##vso[task.setvariable variable=podName3]$COMMAND"
或添加一个powershell任务并运行以下命令来设置变量:
$COMMAND="$(echo '$env:pods' | grep -oh -P '[^ ]*' | grep schema)"
Write-Host "##vso[task.setvariable variable=podName3]$COMMAND"
答案 1 :(得分:1)
在这篇文章中添加一个 PSA,看起来他们改变了现在访问变量的方式——你必须像这样访问变量:$(variable)
COMMAND=$(echo '$pods' | grep -oh -P '[^ ]*' | grep schema)
echo "##vso[task.setvariable variable=podName3]$(COMMAND)"
答案 2 :(得分:0)
我为此创建了一个命令行工具和一个Azure DevOps任务:https://marketplace.visualstudio.com/items?itemName=riezebosch.setvar
它仅允许您将命令的输出通过管道传递到工具中,并将其作为魔术变量字符串输出。它是用Go语言编写并交叉编译的,因此可以在所有主要平台和所有不同的shell上使用。
您的示例:
echo '$pods' | grep -oh -P '[^ ]*' | grep schema | setvar -name podName3
您只需在此脚本任务之前包括setvar
任务,即可在代理上获取该工具。