无法将 Azure CLI 错误输出存储到变量

问题描述 投票:0回答:2

我尝试使用 Azure CLI 对 Azure 现有环境进行一些更改。对于成功的请求,我可以使用“--query”提取所需的详细信息,但对于失败的请求,我无法捕获变量的输出。

例如:

az group show -n "rgname"

输出:(ResourceGroupNotFound)找不到资源组“rgname”

如何捕获此错误输出到变量

azure azure-cli
2个回答
2
投票

PowerShell 将消息写入您可以重定向的不同流。 g。到标准输出流:

$output = (az group show -n "rgname" 2>&1)

现在

$output
将包含错误消息和常规输出。

或者,您可以将错误消息重定向到文件:

az group show -n "rgname" 2>error.log

另请参阅:https://stackoverflow.com/a/17421207/1163423


2
投票

程序执行时,会按顺序打开三个文件句柄:stdinstdoutstderr。这些文件句柄有数字:0、1 和 2。这将有助于解释 2>&1 的作用(将 stderr 重定向到 stdout)。

大多数程序(但不是全部)都会将错误消息写入 stderr。

stderr 捕获到变量:

error=$(myprogram 2>&1 > /dev/null)

该示例首先将 stdout 重定向到 /dev/null,然后将 stderr 重定向到 stdout。然后,该输出被捕获在变量 error 中。

如果您还想捕获正常的 stdout 消息:

error=$({myprogram > tmpfile;} 2>&1)
messages=$(<tmpfile)
rm tmpfile
© www.soinside.com 2019 - 2024. All rights reserved.