Rechercher : dans
Par :

Boucle en bash

Dernière réponse le 17 avr 2009 à 10:39:27 Moss, le 17 avr 2009 à 09:47:44 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Firefox 3.0.8

Meilleures réponses pour « boucle en bash » dans :
Sed - Introduction à SED - Part III Voir SED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
ADSL - Le dégroupage de la boucle locale VoirIntroduction au dégroupage de la boucle locale On appelle "boucle locale" la partie finale de la ligne téléphonique arrivant à l'abonné. Afin de vous faire profiter de l'internet à haut débit (ADSL), les Fournisseurs d'Accès à Internet (FAI)...

1

 mamiemando, le 17 avr 2009 à 10:39:27

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

Répondre à mamiemando