timer

un timer en shell - retour accueil

git clone git://bebou.netlib.re/timer
Log | Files | Refs |

timer (1561B)


      1 #! /bin/sh
      2 
      3 if [ "$1" = "-h" -o "$1" = "--help" ];then
      4 	<<% cat
      5 timer [secondes] [minutes] [heure]
      6 
      7 Un minuteur avec un maximum de 23h, 59 minutes et 59 secondes.
      8 Ne pas utiliser pour des cas nécessitant une bonne précision,
      9 le minuteur a généralement un décalage de quelques dixièmes de
     10 secondes.
     11 
     12 En l'absence d'un argument sa valeur par défaut sera 0.
     13 
     14 Exemples :
     15 
     16 30 secondes              : ./timer 30
     17 2 minutes et 15 secondes : ./timer 15 2
     18 4 heures                 : ./timer 0 0 4
     19 
     20 ./timer 30 est identique à ./timer 30 0 0
     21 ./timer 135 est identique à ./timer 15 2
     22 
     23 Affichage :
     24 
     25 Par défaut affiche le texte brut.
     26 Il est possible de le personnaliser en modifiant
     27 la fonction display.
     28 Une ligne ayant une dépendance sur toilet est
     29 commentée dans la fonction, la décommenter
     30 et commenter l'echo pour utiliser cet affichage.
     31 %
     32 	exit 0
     33 fi
     34 
     35 display(){
     36 	# Si l'on veut rester sur la même ligne, sinon commenter
     37 	tput cup 0 0
     38 	for it; do read -r "${it?}"; done
     39 	# Première ligne pour une version un peu fancy
     40 	# Seconde ligne pour la version de base
     41 	#toilet -f ansi "$text  "
     42 	echo "$text"
     43 }
     44 
     45 launch(){
     46 	for it; do read -r "${it?}"; done
     47 	[ $total -ge 3600 ] && format="%H:%M:%S" || format="%M:%S"
     48 	for i in $(seq $total -1 1);do
     49 		date --date "01 jan 1970+$i seconds" +"$format" | display text
     50 		sleep 0.985
     51 	done
     52 }
     53 
     54 calculate(){
     55 	for it; do read -r "${it?}"; done
     56 	echo $(( ${hours:-0}*3600+${minutes:-0}*60+${seconds:-0} ))
     57 }
     58 
     59 clear
     60 tput civis
     61 trap "tput cnorm" QUIT EXIT INT
     62 echo "$1\n$2\n$3" | calculate seconds minutes hours | launch total
     63