IMHO seria mais elegante usar a presença / valor da variável para fechar condicionalmente os descritores de arquivo, por exemplo,
$ cat myscript.sh
#!/bin/bash
if [ -n "$MUTE" ]; then
exec &>-
fi
echo somestuff
echo someerr >&2
então
$ ./myscript.sh
somestuff
someerr
mas
$ MUTE=yes ./myscript.sh
$
Se você realmente quiser alternar o redirecionamento, pode considerar a criação de uma função de shell que duplique o (s) descritor (es) de arquivo antes de fechá-los e restaure os duplicados para reativar os fluxos originais eg
#!/bin/bash
function mute {
case "" in
"on")
exec 3>&1-
exec 4>&2-
;;
"off")
exec 1>&3-
exec 2>&4-
;;
*)
esac
}
# Demonstration:
echo "with mute on: "
mute on
ls somefile
ls nofile
mute off
echo "with mute off: "
ls somefile
ls nofile
Resultado:
$ ./mute.sh
with mute on:
with mute off:
somefile
ls: cannot access nofile: No such file or directory