Eu tenho um pequeno script de teste aqui, ele tem tratamento de erros. Gostaria que todos os STDERR e STDOUT fossem exibidos no console (que atualmente são) E transformados em um arquivo de log.
#!/bin/bash
# error handling
function error_handler() {
echo "Error occurred in script at line: ${1}."
echo "Line exited with status: ${2}"
}
trap 'error_handler ${LINENO} $?' ERR
set -o errexit
set -o errtrace
set -o nounset
if rsync -aPh ~/Downloads/Temps-linux-x64.zip .; then
echo "SUCCESSFULL rsync of files"
else
echo "FAILED rsync of files"
fi
Eu tentei capturá-lo adicionando isso ao início;
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>log.out 2>&1
mas isso (como deveria) registra tudo, mas não tem saída para o console. Também está fazendo com que o tratamento de erros não funcione corretamente, por isso preciso de outra solução.