постоянно забываю, как в шелловских скриптах сделать вывод stdout и stderr на экран, а потом еще отдельно обработать один из потоков. вот одно из решений:
exec 3>&1
{
# здесь должны быть команды
} 2>&1 >&3 3>&- | tee -a errorlog
# или так для логгинга только stdout
#} 2>&3 3>&- | tee -a goodlog