2010-02-24 13 views
3

Tout d'abord, merci à tous pour votre aide. Je peux voir la réussite de mon projet dans quelques jours ..Barre d'état en bash

J'ai besoin de savoir comment mettre une barre d'état dans Shell Script, quelque chose comme ça.

No_of_files=55 
index=0 

while [ $index -lt $No_of_files ] 
do 
    echo -en "$index of $No_of_Files Completed" 
    index=$((index + 1)) 
done 

Résultat attendu: 1 de 55 Achevé 2 de 55 Terminé

chaque itération, l'indice devrait être remplacé mais pas d'autres caractères.

Merci Kiran

+0

Si une réponse fonctionne pour vous, assurez-vous de la marquer comme réponse acceptée. Cela ira un long chemin dans votre capacité à obtenir des réponses plus détaillées à l'avenir et aidera ceux qui arrivent à ce sujet avec la même question. – SiegeX

+0

Je suis nouveau sur ce forum et étonné comment les gens ont été rapides à s'entraider .. Merci de le signaler, bien encore .. kiran – Kiran

Répondre

6

, de sorte que vous pouvez remplacer la dernière chose imprimé avec un nouveau message:

for ((I=0 ; I < 10 ; I++)); do 
    echo -en "\r$I of 10 completed" 
    sleep 1 
done 
echo 

Cela ressemble juste le nombre $I serait en train de changer.

+1

+1 et supprimé ma réponse parce que je préfère '\ r' que' tput hpa 0' puisque je suis sûr que c'est plus portable. – SiegeX

+0

C'est ce que je cherchais .. Incroyable .. Merci – Kiran

3

vous avez oublié d'incrémenter la variable $ index. ((index++)). Vous pouvez voir here aussi pour que vous pouvez imprimer \r pour revenir au début de la ligne script à la barre de progression

est ici une version de l'homme pauvre

No_of_files=55 
index=0 

while [ $index -lt $No_of_files ] 
do 
    echo -ne "\r$index of $No_of_files Completed" 
    ((index++)) 
    sleep 1 
done 
+0

Merci .. J'ai oublié d'ajouter .. :) Merci de le faire remarquer – Kiran

+0

Je ne recommanderais pas d'utiliser 'clear' car cela effacera tout autre type d'information d'écran que vous pourriez vouloir ou ajouter dans le futur. "tput hpa 0" ou même l'écho d'un groupe de '\ b 'est une meilleure façon de faire. – SiegeX