I have a shell script in which I wrap a command (mvn clean install), to redirect the output to a logfile.
#!/bin/bash
...
mvn clean install $@ | tee $logfile
echo $? # Does not show the return code of mvn clean install
Now if mvn clean install
fails with an error, I want my wrapper shell script also fail with that error. But since I’m piping all the output to tee, I cannot access the return code of mvn clean install
, so when I access $?
afterwards, it’s always 0 (since tee successes).
I tried letting the command write the error output to a separate file and checking that afterwards, but the error output of mvn is always empty (seems like it only writes to stdout).
How can I preserve the return code of mvn clean install
but still piping the output to a logfile?