
Una vez que se redirige STDERR, por ejemplo a un archivo, ¿cómo se puede redirigir nuevamente al descriptor de archivo original 2?
#!/bin/sh
exec 2>/tmp/err
print -u2 'log errors to file'
exec 2>&2 (how do we do this???)
print -u2 'log errors to console'
Contexto
Esta solución de redireccionamiento debería funcionar en un trabajo cron. Por ejemplo, si cron ejecuta un script externo, ese script redirigirá stdout y stderr a archivos de registro y de error relevantes, respectivamente. Sin embargo, si falla una ejecución en el script o es necesario informar algo al propietario del trabajo, debo generar los mensajes de error para que cron los reciba y envíe el correo.
Respuesta1
Intentar:
#!/usr/bin/env ksh
exec 2>ksh_err.txt
print -u2 'log errors to file'
exec 2>`tty`
print -u2 'log errors to console'
Edición 1:
#!/usr/bin/env ksh
exec 8>err.txt
print -u8 'log errors to file'
print -u2 'log errors to console'
Edición 2:
#!/usr/bin/env ksh
exec 3>&2
exec 2>err.txt
print -u2 'log errors to file'
exec 2>&3
print -u2 'log errors to console'