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