#/bin/bash [[ -n $1 ]] && goal="$(date +$1)" || goal="tomorrow 00:00" LANG=C date -d "$goal" >/dev/null || exit 1 function countdown_negative() { echo "$(basename $0): invalid countdown '${remainingsec}'" >&2 exit 2 } remainingsec=$(($(date -d "$goal" +%s) - $(date +%s))) [ $remainingsec -lt 0 ] && countdown_negative H=$(($remainingsec / 3600)) remH=$(($H * 3600)) [ $H -lt 10 ] && H="0$H" m=$(($(($remainingsec - $remH)) / 60)) remm=$(($m * 60)) [ $m -lt 10 ] && m="0$m" s=$(($remainingsec - $remH - $remm)) [ $s -lt 10 ] && s="0$s" echo "$H:$m:$s"