シェルスクリプト-ログファイルの作成

ファイルへログを出力する。


ログファイルの作成


現在ディレクトリに「setup_YYYYMMDDhhmm.log"」というファイルを作成する場合、以下のように記述します。



CURRENT_DIR=$(cd "$(dirname "$(readlink -f "${0}" || echo "${0}")")"; pwd -P)
LOG_FILE="${CURRENT_DIR}/setup_$(date +%Y%m%d%H%M).log"

ログ出力


標準出力と標準エラー出力を共に書き込むには「2>&1」を指定します。



command >> "${LOG_FILE}" 2>&1

上記の場合、出力は全てファイルに吐かれます。ファイルにもコンソール上にも出力したい場合、teeコマンドを用いることが一般的です。



command 2>&1 | tee -a "${LOG_FILE}"

コマンドによっては、ログを出力したくない場合もありますので、その場合/dev/nullに出力することでコンソール上に出力させないようにします。



command > /dev/null 2>&1

エラー確認


エラー内容を確認したい場合は、grepコマンドが便利です。



grep -E "Error|error|Err" "${LOG_FILE}"

なお、エラーメッセージとして、echoに「Error」などの識別子を付ける必要があります。



if [ $? -ne 0 ]; then
    echo "[Error] Unable to delete ${TARGET_DIR}"
    return 1
fi


関連ページ