Não sei ao certo por que "pararia", o que você quer dizer com isso (o script sai? Pare?), mas vejo um problema: a última linha deve ser exec 2>&7 7>&-
.
(Além disso, o comentário nessa linha deve dizer "stderr" em vez de "stdout".)
Eu herdei um script que faz isso em uma função:
# IO redirection for logging.
#touch $LOGFILE
exec 6>&1 # Link file descriptor #6 with stdout.
# Saves stdout.
exec > $LOGFILE # stdout replaced with file $LOGFILE.
touch $LOGERR
exec 7>&2 # Link file descriptor #7 with stderr.
# Saves stderr.
exec 2> $LOGERR # stderr replaced with file $LOGERR.
Mais tarde, na função, isso acontece:
#Clean up IO redirection
exec 1>&6 6>&- # Restore stdout and close file descriptor #6.
exec 1>&7 7>&- # Restore stdout and close file descriptor #7.
O problema é se eu chamar esta função duas vezes (ou seja, em um loop) a segunda iteração pára no primeiro conjunto de código acima sem mostrar um erro.
Por que isso seria feito?
Não sei ao certo por que "pararia", o que você quer dizer com isso (o script sai? Pare?), mas vejo um problema: a última linha deve ser exec 2>&7 7>&-
.
(Além disso, o comentário nessa linha deve dizer "stderr" em vez de "stdout".)
Tags bash