脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

bashスクリプトのログに日付をつける(プロセス置換機能)

プロセスをあたかもファイルのように扱える。
こんな機能があったなんて!

bashのプロセス置換機能を活用して、シェル作業やスクリプト書きを効率化する
http://sechiro.hatenablog.com/entries/2013/08/15/


shell scriptはバッチでたまに書いたりするくらいだけど、
どんな区切りで時間を出そうか悩まなくていいし、簡潔になるねー。

#!/bin/bash
BASEDIR="$(cd $(dirname $0) && pwd)"
LOGFILE="$BASEDIR/`date +\"%Y%m%d%H%M%S\"`.log"

# redirect stdout/stderr to tee to write the log file
exec 1> >( awk '
{
    cmd ="date +\"%Y-%m-%d %H:%M:%S \""
    cmd | getline now
    close("date +\"%Y-%m-%d %H:%M:%S \"")
    sub(/^/, now)
    print
    fflush()
}' | tee "${LOGFILE}") 2>&1

目からうろこ!
ちょっとした場面で使えるところが出てくる気がする。