#!/bin/bash # geklaut vom linuxhotel.de LANG=C export BUILD="2.9.64" set -o nounset function banner() { local -A b local -i l local -i i b[00]=' 000' b[01]=' 0 0' b[02]='0 0 0' b[03]='0 0 0' b[04]='0 0 0' b[05]=' 0 0' b[06]=' 000' b[07]='' b[10]=' 1' b[11]=' 11' b[12]=' 1 1' b[13]=' 1' b[14]=' 1' b[15]=' 1' b[16]=' 11111' b[17]='' b[20]=' 22222' b[21]='2 2' b[22]=' 2' b[23]=' 22222' b[24]='2' b[25]='2' b[26]='2222222' b[27]='' b[30]=' 33333' b[31]='3 3' b[32]=' 3' b[33]=' 33333' b[34]=' 3' b[35]='3 3' b[36]=' 33333' b[37]='' b[40]='4' b[41]='4 4' b[42]='4 4' b[43]='4444444' b[44]=' 4' b[45]=' 4' b[46]=' 4' b[47]='' b[50]='5555555' b[51]='5' b[52]='5' b[53]=' 55555' b[54]=' 5' b[55]='5 5' b[56]=' 55555' b[57]='' b[60]=' 66666' b[61]='6 6' b[62]='6' b[63]='666666' b[64]='6 6' b[65]='6 6' b[66]=' 66666' b[67]='' b[70]='7777777' b[71]='7 7' b[72]=' 7' b[73]=' 7' b[74]=' 7' b[75]=' 7' b[76]=' 7' b[77]='' b[80]=' 88888' b[81]='8 8' b[82]='8 8' b[83]=' 88888' b[84]='8 8' b[85]='8 8' b[86]=' 88888' b[87]='' b[90]=' 99999' b[91]='9 9' b[92]='9 9' b[93]=' 999999' b[94]=' 9' b[95]='9 9' b[96]=' 99999' b[97]='' b[:0]=' :' b[:1]=' :::' b[:2]=' :' b[:3]='' b[:4]=' :' b[:5]=' :::' b[:6]=' :' b[:7]='' for ((l=0;l<8;l++)); do for ((i=0;i<${#1};i++)); do printf "%-8.8s" "${b[${1:i:1}$l]}" done echo done } function usage() { local base="$(basename $0)" echo "Build: $BUILD" echo "Usage: $base HH:MM" >&2 echo " $base +minutes" >&2 echo " $base +0" >&2 } if [ $# -ne 1 ]; then usage exit 1 elif [[ $1 =~ ^([01][0-9]|2[0-3]):[0-5][0-9]$ ]]; then dateHHMMSS="${1}:00" elif [[ $1 =~ ^\+[0-9]+ ]]; then dateHHMMSS=$(date -d "now $1 minutes" +%H:%M:%S) else usage exit 2 fi clear declare -i diff declare -i initDiff=$(($(date -d "$dateHHMMSS" +%s)-$(date +%s))) ((initDiff == 0)) && initDiff=1 declare -i lenOutDate declare -i lenOutTime declare outDate declare outTime declare -r spaces=" " declare -r pegel="#####################################" declare -ri lenPegel=${#pegel} declare -ri lenSpaces=${#spaces} declare -i posPegel declare -i pad while true; do key="" diff=$(($(date -d "$dateHHMMSS" +%s)-$(date +%s))) outDate=$(date +"%Y-%m-%d %H:%M:%S") outTime="${dateHHMMSS} (${diff})" lenOutDate=${#outDate} lenOutTime=${#outTime} tput home pad=$((lenSpaces-lenOutDate)) echo "${spaces:0:$((pad/2))}${outDate}${spaces:0:$((pad/2))} " pad=$((lenSpaces-lenOutTime)) echo -e "${spaces:0:$((pad/2))}${outTime}${spaces:0:$((pad/2))} " posPegel=$((($initDiff-$diff)*$lenPegel/$initDiff)) if (($diff >= 0 )); then echo "[${pegel:0:$posPegel}${spaces:$((posPegel+2))}]" else echo "$spaces" fi if (( $diff == 0 )); then tput setaf 0 elif (( $diff < 0 )); then ((diff=-diff)) tput setaf 1 elif (( $diff < 60 )); then tput setaf 4 else tput setaf 2 fi echo banner $(date -d @$diff +%M:%S) tput setaf 0 echo -ne "\r \r" && read -s -t 1 -n 1 && read -s -t 3 -n 1 -p "sure? (-/n) " key && [ "$key" != "n" ] && break done echo -en "\r"