尝试将 azure Advisor 建议的输出保存到变量中,以便我可以继续执行下一个任务。
但是,无论我尝试什么语法,并且相信我已经尝试了所有可能的组合,该变量都不会被保存。 有趣的是,这些在 cloud shell (bash) 中工作 例如
rgName="$(az group list --query "[?tags.Test=='yes'].name" --output tsv)"
az group show -n $rgName
这在 Cloud shell 中运行得很好。但不在 DevOps azurecli 任务中。 我还引用了堆栈溢出本身给出的多个示例,但它们都不起作用。 使用任务版本 1.*
rgName' is not recognised as an internal or external command,
有人可以给出 DevOps 任务的工作示例吗?
注意:顺便说一句,我使用 cli 的全部原因是因为找不到 Advisor RM 模块,并且 Az 模块无法在任务版本 4 中正确加载。*
最佳答案
正如 Shayki 上面提到的,task.setvariable
可以帮助从脚本设置变量。 this 中对此进行了详细说明。文档。简而言之,您必须这样做:
rgName=$(az group list --query "[?tags.Test=='yes'].name" -o tsv | tr '\n' ' ')
echo "##vso[task.setvariable variable=RESULT]$rgName"
task.setvariable
是一个日志记录命令,不会更新环境变量,但它确实使新变量可用于同一作业中的下游步骤。请注意,结果由 CRLF 分隔,而不是空格,因此修剪 tr '\n' ' '
。现在,在后续需要该变量的任务中,您可以这样使用它:
echo "Result: $(RESULT)"
引用this博客以获取详细的演练。希望这有帮助!
关于azure - 将输出保存到在 Azure-CLI DevOps 任务中不起作用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56269703/