カウントダウンするシェル

カウントダウンするシェルです。素早く定時で帰るために定時まであと何秒かをカウントする、というしょうもない目的のために生まれたシェルです。

#!/bin/bash

###############################################
# スクリプト:countdown.sh
# 処理内容 :カウントダウンをするシェル
# 引数 :[$1] カウントダウンする秒数
# [-t YYYYMMDDHHMMSS] カウントダウン終了日時を指定
# 作成日 :2018/02/25
###############################################

#変数の個数チェック
if [ $# -eq 0 ]; then
echo “エラー:引数を入力してください”
exit
fi

#オプション判定
if [ $1 = “-t” ]; then
if [ ! ${#2} -eq 14 ]; then
echo “エラー:引数が間違っています”
echo “実行方法:$0 -t YYYYMMDDHHMMSS”
exit
fi
#個別変数定義
YEAR=$(echo $2 | cut -c 1-4)
MONTH=$(echo $2 | cut -c 5-6)
DAY=$(echo $2 | cut -c 7-8)
HOUR=$(echo $2 | cut -c 9-10)
MIN=$(echo $2 | cut -c 11-12)
SEC=$(echo $2 | cut -c 13-14)
START_UNIX_TIME=$(date +%s)
END_UNIX_TIME=$(date -d “${YEAR}/${MONTH}/${DAY} ${HOUR}:${MIN}:${SEC}” +%s)
COUNTDOWN_TIME=$(expr ${END_UNIX_TIME} – ${START_UNIX_TIME})
else
#個別変数定義
COUNTDOWN_TIME=$1
fi

#共通変数定義
TMPDIR=.
TMPFILE=$(mktemp ${TMPDIR}/countdown.tmp_XXXX)
PGM_STOP_TIME=$(expr ${COUNTDOWN_TIME} + 3)

#TMPFILEの削除ロジック
trap “rm -f ${TMPFILE}” 0 1 2 3 4 5 6 8 9 11 15

#TMPFILEに初期値設定
echo ${COUNTDOWN_TIME} > $TMPFILE

#プロセスkill処理のバックグラウンド実行
$(sleep ${PGM_STOP_TIME};PID=$(ps -ef | grep “watch -n 1 -t” | grep -v grep | awk ‘{print $2}’);kill ${PID}) &

#watchコマンド実行
watch -n 1 -t “\
CNT=\$(cat $TMPFILE);\
[ \$CNT -le 0 ] && echo “時間でーす” || echo \$CNT;\
CNT=\$(expr \$CNT – 1);\
echo \$CNT > $TMPFILE;”

コメント

タイトルとURLをコピーしました