bashで標準出力をファイルに、標準エラー出力を画面とファイルに出力したい
   1 min read

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と言うそうです。

参考: