我知道我可以将标准输出重定向到环境变量,例如
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)
请确保稍后清理这些文件。