bashで標準出力をファイルに、標準エラー出力を画面とファイルに出力したい
Git の pre-push でテスト実行を行おうとした際、通常テスト実行ではデバッグログを出しているところを、エラーを表すものだけに絞って出すようにしようと考えました。
#!/bin/bash
set -eu
targetdir=target
echo 'executing git pre-push hook...'
mvn clean > /dev/null
if [ ! -d $targetdir ]; then
mkdir $targetdir
fi
{ mvn test 1> $targetdir/pre-push.stdout.txt; } 2>&1 | tee $targetdir/pre-push.stderr.txt
exit ${PIPESTATUS[0]}
{ …; }
は command groupingと言うそうです。
参考: