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