Piping a saída do comando para tee, mas também salve o código de comando de saída [duplicado]

Esta pergunta já tem uma resposta aqui:

Pipe a saída e capture o status de saída no Bash 15 respostas

Eu tenho um script de shell no qual envolvo um comando (mvn clean install), para redirecionar a saída para um arquivo de lo

#!/bin/bash
...
mvn clean install $@ | tee $logfile
echo $? # Does not show the return code of mvn clean install

Agora semvn clean install falha com um erro, quero que meu script de shell wrapper também falhe com esse erro. Mas como estou canalizando toda a saída para tee, não consigo acessar o código de retornomvn clean install, então quando eu acessar$? depois, é sempre 0 (desde o sucesso do tee

Tentei deixar o comando gravar a saída de erro em um arquivo separado e verificar isso depois, mas a saída de erro do mvn está sempre vazia (parece que ele grava apenas no stdout

Como posso preservar o código de retorno demvn clean install mas ainda canaliza a saída para um arquivo de lo

questionAnswers(4)

yourAnswerToTheQuestion