我嘗試使用 Azure CLI 對 Azure 現有環境進行一些更改。對于成功請求,我可以使用“--query”提取所需的詳細資訊,但對于失敗的請求,我無法將輸出捕獲到變數。
例如:
az group show -n "rgname"
輸出:(ResourceGroupNotFound)找不到資源組“rgname”
如何將此錯誤輸出捕獲到變數中。
uj5u.com熱心網友回復:
PowerShell 將訊息寫入不同的流,您可以將這些訊息重定向到例如標準輸出流:
$output = (az group show -n "rgname" 2>&1)
現在$output將包含 - 錯誤訊息和常規輸出。
或者,您可以將錯誤訊息重定向到檔案:
az group show -n "rgname" 2>error.log
另見:https : //stackoverflow.com/a/17421207/1163423
uj5u.com熱心網友回復:
執行程式時,會按以下順序打開三個檔案句柄:stdin、stdout和stderr。這些檔案句柄有數字:0、1 和 2。這將有助于解釋 2>&1 的作用(將 stderr 重定向到 stdin)。
大多數程式(但不是全部)將錯誤訊息寫入 stderr。
要將stderr捕獲到變數:
error=$(myprogram 2>&1 > /dev/null)
該示例首先將stdout重定向到 /dev/null ,然后將stderr重定向到stdout。然后在變數error 中捕獲該輸出。
如果您還想捕獲正常的stdout訊息:
error=$({myprogram > tmpfile;} 2>&1)
messages=$(<tmpfile)
rm tmpfile
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334193.html
