OS X:將指令的錯誤輸出重新導向到環境變數

OS X:將指令的錯誤輸出重新導向到環境變數

我知道我可以將標準輸出重定向到環境變量,例如

retcode=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges')

但是如何將 stderr 輸出也重新導向到環境變數(在本例中偵測使用者取消管理憑證對話框)?

答案1

這是將 stdout 和 stderr 重新導向到一個變數的最簡單方法:

output=$(/usr/bin/osascript -e 'do shell script ... with administrator privileges' 2>&1)
retcode=$?

如果你想分別捕捉 stdout 和 stderr,事情會變得更加複雜。我認為唯一直接的方法是將 stdout/stderr 重定向到單獨的檔案:

/usr/bin/osascript -e 'do shell script ... with administrator privileges' >/tmp/$$.stdout 2>/tmp/$$.stderr

retcode=$?
output=$(cat /tmp/$$.stdout)
stderr=$(cat /tmp/$$.stderr)

請確保稍後清理這些文件。

相關內容