Respostas:
Você pode ligar execnovamente para restaurar os descritores originais. Você precisará salvá-los em algum lugar.
exec 3>&1 4>&2 1>script.log 2>&1
… logged portion …
exec 1>&3 2>&4
echo >&2 "Done"
Dentro da parte registrada, você pode usar os descritores originais para um comando redirecionando para os descritores extras.
echo "30 seconds remaining" >&3
Como alternativa, você pode colocar a parte registrada do seu script dentro de um comando composto e redirecionar esse comando composto. Isso não funciona se você deseja usar os descritores originais em uma armadilha em algum lugar dessa parte redirecionada.
{
… logged portion …
} >script.log 2>&1
echo >&2 "Done"
Use fd 3 e 4 adicionais para stdout e stderr e simplesmente redirecione 1 e 2 para eles no final do seu 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
Primeiro, verifique se você tem ou não um tty.
if tty -s; then
echo "Hello, World" > $(tty)
fi
ttyutilitário externo . Você pode redirecionar para o dispositivo especial /dev/tty.
>&3faz desta a minha solução preferida. Obrigado novamente)!