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)

请确保稍后清理这些文件。

相关内容