我知道我可以將標準輸出重定向到環境變量,例如
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)
請確保稍後清理這些文件。