#!/bin/sh
# ex :
# ~$ test.sh "command1" "command2"
# [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||] 100.00%
barre_progression ()
{
nb_iterations=$1
liste_length=$2
pourcent=`echo "scale=2;($nb_iterations * 100) / $liste_length" | bc`
pourcent=`printf "% 3.2f" "$pourcent"`
chaine="$pourcent"
nb_etoiles=`echo "scale=0;$chaine / $diviseur_barre" | bc`
etoiles=""
while test $nb_etoiles -gt 0
do
etoiles="${caractere_barre}${etoiles}"
nb_etoiles=`echo "$nb_etoiles - 1" | bc`
done
etoiles=`printf "[%-${largeur_barre}s]" "$etoiles"`
pourcentage=`printf "%7s" "$chaine"`
#echo "\r${etoiles}${pourcentage}%\r\c"
printf "%b%b%b" "\r${etoiles}" "${pourcentage}" "%\r\c"
}
# INITIALISATION DE LA BARRE DE PROGRESSION
init_progress_bar ()
{
# caractere qui sera affiche dans la barre de progression
caractere_barre="|"
# detection de l'OS
os=`uname -s | tr [a-z] [A-Z]`
# recuperation de la largeur en caracteres du terminal
if test "$os" = "LINUX"
then
largeur_ecran=`stty -a | grep columns | cut -d ' ' -f7 | tr -d ';'`
elif test "$os" = "SUNOS"
then
largeur_ecran=`stty | grep columns | cut -d ' ' -f6 | tr -d ';'`
else
echo "Systeme d'exploitation incompatible, programme stoppe"
exit 1
fi
# calcul de la largeur optimale de la barre de progression
largeur_barre=`echo "$largeur_ecran - 7 - 2 - 1" | bc`
diviseur_barre=`echo "scale=2;100 / $largeur_barre" | bc`
# protection des variables
readonly largeur_ecran largeur_barre diviseur_barre caractere_barre
}
# gestion de la langue de l'environnement
LC_NUMERIC=C
init_progress_bar
liste_length=$#
nb_iterations=0
if test $liste_length -gt 0
then
for i in "$@"
do
nb_iterations=`echo "$nb_iterations + 1" | bc`
$i 2>&1 >/dev/null
barre_progression "$nb_iterations" "$liste_length"
# sleep 1
done
fi
echo " "