ファイルを監視して増分を表示する君

  • 1
    いいね
  • 0
    コメント
watcher.sh
set -eu

# ----------------------------------------------------------------------
# 監視したいファイル
FILE_NAME="a.txt"
# 監視したいファイルの行数を格納。変化したらなにかする。
LINE="a.line"
# ----------------------------------------------------------------------

# ファイルなかったら作成
init() {
    if [ ! -e $FILE_NAME ];then
        touch $FILE_NAME
    fi
    if [ ! -e $LINE ];then
        echo 0 > $LINE
    fi
}

# 行数の変化監視
watcher() {
    LAST_LINE=`cat $LINE`
    CURRENT_LINE=`wc -l $FILE_NAME`
    if [ "$CURRENT_LINE" = "$LAST_LINE" ]; then
        return 
    fi

    echo $CURRENT_LINE > $LINE

    TMP_LINE=`echo $LAST_LINE | cut -f 1 -d " "`
    NEXT_LINE=`expr $TMP_LINE + 1`

    ## 追加された行以降を表示
    NEW_RECORD=`tail -q -n +$NEXT_LINE $FILE_NAME`

    ## 標準出力
    echo "$NEW_RECORD"

    ## メール送信したい場合は以下
    # echo "$NEW_RECORD" | mail -s "subject" to@addr.com

    ## slackに投稿する場合(未確認。ダブルクォーテーション辺りが怪しい。)
    # curl -X POST -H 'Content-type: application/json' \
    #  --data '{"text":"'"$NEW_RECORD"'"}' \
    #  "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
}
# ----------------------------------------------------------------------

init
while true
do
    watcher
    # 2秒おきに監視
    sleep 2
done