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.