Respuestas:
Puede execvolver a llamar para restaurar los descriptores originales. Tendrás que haberlos guardado en alguna parte.
exec 3>&1 4>&2 1>script.log 2>&1
… logged portion …
exec 1>&3 2>&4
echo >&2 "Done"
Dentro de la parte registrada, puede usar los descriptores originales para un comando redirigiendo a los descriptores adicionales.
echo "30 seconds remaining" >&3
Alternativamente, puede colocar la parte registrada de su script dentro de un comando compuesto y redirigir ese comando compuesto. Esto no funciona si desea utilizar los descriptores originales en una trampa en algún lugar dentro de esa parte redirigida.
{
… logged portion …
} >script.log 2>&1
echo >&2 "Done"
Use additinal fd 3 y 4 para stdout y stderr y simplemente redirija 1 y 2 a ellos al final de su script:
exec 3>&1 4>&2
exec >script.log 2>&1
echo "Some code"
exec >&3 2>&4
echo "Done"
exec 3>/dev/stdout 4>/dev/stderr -bash: /dev/stdout: Permission denied
Primero debe verificar si tiene o no un tty en absoluto.
if tty -s; then
echo "Hello, World" > $(tty)
fi
ttyutilidad externa . Puede redirigir al dispositivo especial /dev/tty.
>&3hace de esta mi solución preferida. Gracias de nuevo)!