OS X: Redirigir la salida de error del comando a la variable de entorno

OS X: Redirigir la salida de error del comando a la variable de entorno

Sé que puedo redirigir la salida estándar a una variable de entorno, por ejemplo

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

pero ¿cómo redirigir también la salida stderr a una variable de entorno (en este ejemplo para detectar que un usuario cancela el cuadro de diálogo de credenciales de administrador)?

Respuesta1

Esta es la forma más sencilla de redirigir stdout y stderr a una variable:

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

Se está volviendo más complicado si desea capturar stdout y stderr por separado. Creo que la única forma sencilla es redirigir stdout/stderr a archivos separados:

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

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

Asegúrate de limpiar los archivos más tarde.

información relacionada