Recherche de site Web

Compte à rebours Bash


En utilisant un peu de script Bash, il est possible de créer un compte à rebours sous Linux. Cela vous permettra de compter à rebours en secondes, en minutes ou jusqu’à une date future.

Consultez le script ci-dessous. Vous pouvez le copier sur votre propre système, puis essayer certains de nos exemples pour voir comment la syntaxe fonctionne.

Dans ce tutoriel, vous allez apprendre :

  • Comment utiliser un compte à rebours Bash sur Linux

Script de compte à rebours Bash

Le script du compte à rebours est ci-dessous. Pour l’utiliser, il suffit de coller le code dans un nouveau fichier. Les scripts Bash sont assez faciles à comprendre et à modifier, alors n’hésitez pas à y apporter les modifications que vous jugez nécessaires. Il est également hébergé sur un dépôt Git dédié.

#!/bin/bash 
 
if [ "$#" -lt "2" ] ; then 
	echo "Incorrect usage ! Example:" 
	echo './countdown.sh -d  "Jun 10 2011 16:06"' 
	echo 'or' 
	echo './countdown.sh -m  90' 
	exit 1 
fi 
 
now=`date +%s` 
 
if [ "$1" = "-d" ] ; then 
	until=`date -d "$2" +%s` 
	sec_rem=`expr $until - $now` 
	echo "-d" 
	if [ $sec_rem -lt 1 ]; then 
		echo "$2 is already history !" 
	fi 
fi 
 
if [ "$1" = "-m" ] ; then 
	until=`expr 60 \* $2` 
	until=`expr $until + $now` 
	sec_rem=`expr $until - $now` 
	echo "-m" 
	if [ $sec_rem -lt 1 ]; then 
		echo "$2 is already history !" 
	fi 
fi 
 
_R=0
_C=7
tmp=0
percent=0
total_time=0
col=`tput cols`
col=$[ $col -5 ]

while [ $sec_rem -gt 0 ]; do 
	clear 
	date 
	let sec_rem=$sec_rem-1 
	interval=$sec_rem 
	seconds=`expr $interval % 60` 
	interval=`expr $interval - $seconds` 
	minutes=`expr $interval % 3600 / 60` 
	interval=`expr $interval - $minutes` 
	hours=`expr $interval % 86400 / 3600` 
	interval=`expr $interval - $hours` 
	days=`expr $interval % 604800 / 86400` 
	interval=`expr $interval - $hours` 
	weeks=`expr $interval / 604800` 
	echo "----------------------------" 
	echo "Seconds: " $seconds 
	echo "Minutes: " $minutes 
	echo "Hours:   " $hours 
	echo "Days:    " $days 
	echo "Weeks:   " $weeks 

	echo -n "["

	progress=$[$progress + 1]
	if [ $total_time -lt 1 ] ; then
		total_time=$[$hours * 3600 + $minutes * 60 + $seconds]
	fi
	
	printf -v f "%$(echo $_R)s>" ; printf "%s\n" "${f// /=}"
	_C=7
	tput cup 7 $col

	tmp=$percent
	percent=$[$progress * 100 / $total_time]
	printf "]%d%%" $percent
	change=$[$percent - $tmp]

	_R=$[ $col * $percent / 100 ]

	sleep 1
done
printf "\n"

Une fois que vous avez enregistré le script dans un fichier, vous devez lui accorder les autorisations d’exécution de fichier. Par exemple, si vous avez nommé votre script countdown.sh :

chmod +x countdown.sh

Exemples d’utilisation du script de compte à rebours Bash

Maintenant que votre script est enregistré et exécutable, consultez certains des exemples ci-dessous pour apprendre à l’utiliser.

  1. Compte à rebours jusqu’à 90 minutes à partir de maintenant. L’option -m indique les minutes.

    ./countdown.sh -m 90
    
  2. Compte à rebours jusqu’à une date ultérieure, par exemple le 23 mars 2036. L’option -d indique une date.

    ./countdown.sh -d "Mar 23 2036"
    
  3. Compte à rebours jusqu’à une heure future, par exemple 21:06.

    ./countdown.sh -d 21:06
    
  4. Vous pouvez également spécifier une heure future jusqu’à la seconde exacte :

    ./countdown.sh -d 21:06:45
    

Réflexions finales

Bien que Linux n’ait pas de commande par défaut pour générer un compte à rebours, Bash offre une telle flexibilité que nous pouvons en coder un nous-mêmes. Un modèle beaucoup plus simple peut être utilisé, mais celui ci-dessus a été rendu plus robuste pour gérer une variété de situations.

Articles connexes: