出力と標準エラーを記録するスクリプト(フラグメント)があります。
#!/bin/sh
#...
{
date "+%Y-%m-%d %T"
cd $workdir
ls -ltr validfile badfile #example command that provides stdout, stderr
} | tee -a $logfile
上記を行うと、ログファイルに標準出力が表示されます。そこで標準エラーを取得するには、これを行うことができます:
#!/bin/sh
#...
{
date "+%Y-%m-%d %T"
cd $workdir
ls -ltr validfile badfile
} 2>&1 | tee -a $logfile
ただし、コマンドラインから呼び出されたスクリプトのこのバージョンでは、エラーを解析できません。
$ ./script.sh 2>/dev/null
すべての標準出力と標準エラーを単に表示します。今回、エラーをただ破棄したい場合はどうすればよいですか?
標準エラーをログにパイプする方法を教えてもらえますが、コマンドラインまたは別のスクリプトを介して呼び出された場合に備えて、標準エラーのままにしますか?
AIX 7.1、ksh(bashなし)