219 votes

Comment ajouter des zéros en tête pour la boucle for dans le shell ?

J'ai une boucle for de base qui incrémente la variable num par 1 à chaque itération...

for (( num=1; num<=5; num++ ))
do
 echo $num
done

Quelles sorties :

1
2
3
4
5

J'essaie de lui faire produire le résultat (ajouter un zéro avant $num) :

01
02
03
04
05

Sans le faire :

echo 0$num

11voto

Benoit Points 35553

Pourquoi pas printf '%02d' $num ? Voir help printf pour cette commande bash interne.

3voto

jd_doubley Points 31

Juste une note : J'ai expérimenté des comportements différents sur différentes versions de bash :

  • version 3.1.17(1)-release-(x86_64-suse-linux) et
  • Version 4.1.17(9)-release (x86_64-inconnu-cygwin))

pour le premier (3.1) for nn in (00..99) ; do ... fonctionne mais for nn in (000..999) ; do ... ne fonctionne pas les deux fonctionneront sur la version 4.1 ; je n'ai pas testé le comportement de printf ( bash --version a donné les informations sur la version)

Santé, Jan

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X