Boucle en bash

Fermé
Moss - 17 avril 2009 à 09:47
mamiemando Messages postés 33435 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 décembre 2024 - 17 avril 2009 à 10:39
Bonjour à tous,

Je souhaiterai faire une boucle qui incrémente une valeur puis qui me la retourne dans un echo. Ceci n'est pas très compliqué mais il faut que cette valeur s'increment de cette facon:
01
02
03
.....
.....
09
10
11
....

Je souhaite mettre un 0 quand la valeur est comprise entre 1 et 9. A partir de 10, le 0 "disparait".

Voici ce que j'ai fais:
#!/bin/bash

echo "Nombre de filesystems que vous voulez ?"
read nombre
clear
numfs=0
numfs2=0

while [ ${numfs} -lt ${nombre} ]
do
 numfs=`expr $numfs + 1`

if [ numfs2 -lt 9 ]
  then
  echo "$numfs2"
   else 
  echo "0$numfs2"
 fi


echo "
 define service{
        use                             local-service         ; Name of service template to use
        host_name                       serveur123
        service_description             Filesystemes_0${numfs}
        check_command                   check_nrpe!check_filesystemes_${numfs}
        notifications_enabled           0
        }"
done



et le résultat n'est pas celui que j'attend; soit j'ai, à la ligne service description,

Filesystemes_01
Filesystemes_02
.....
Filesystemes_010
Filesystemes_011


ou alors j'ai
Filesystemes_1
Filesystemes_2
.....
Filesystemes_10
Filesystemes_11


merci par avance de votre aide

Moss

1 réponse

mamiemando Messages postés 33435 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 décembre 2024 7 810
17 avril 2009 à 10:39
En fait il faudrait trouver l'équivalent d'un printf("%2d",x) en C, mais en bash. Et bonne surprise c'est la fonction prinf :
printf "%02d" 6
printf "%03d" 7
...

Bonne chance
0