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



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

如:az group show -n "rgname"

输出:(ResourceGroupNotFound)资源组'rgname'无法找到

如何将错误输出捕获到变量.

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

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

现在$output将包含- error消息和常规输出。

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

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

参见:https://stackoverflow.com/a/17421207/1163423

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

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

捕获stderr到变量:

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

这个例子首先重定向stdout到/dev/null,重定向stderrstdout. 然后在变量error中捕获该输出.

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

error=$({myprogram > tmpfile;} 2>&1)
messages=$(<tmpfile)
rm tmpfile

相关内容

  • 没有找到相关文章

最新更新