コマンドをラップするシェルスクリプト(mvn clean install)があり、出力をログファイルにリダイレクトします。
#!/bin/bash
...
mvn clean install $@ | tee $logfile
echo $? # Does not show the return code of mvn clean install
エラーで失敗した場合mvn clean install
は、ラッパーシェルスクリプトもそのエラーで失敗するようにします。ただし、すべての出力をteeにパイプしているため、の戻りコードにアクセスできませんmvn clean install
。したがって、$?
後でアクセスすると、常に0になります(teeが成功するため)。
コマンドにエラー出力を別のファイルに書き込んで後で確認しようとしましたが、mvnのエラー出力は常に空です(stdoutにのみ書き込むようです)。
mvn clean install
のリターンコードを保持しながら、出力をログファイルにパイプするにはどうすればよいですか?