• BASH > Les boucles

      FOR

      Première syntaxe

      for VAR in LISTE ; do
         // instructions
      done

       

      Exemple : Lister les fichiers TXT :

       

      for i in *.txt ; do
         echo $i
      done

       

      Exemple : Lister les retours d’une commande shell :

       

      for i in $( ls ); do
         echo $i
      done

       

      Exemple : Parcourir les arguments d’un script :

       

      for i in "$@" ; do
         echo "$i"
      done

       

      Exemple : Liste de valeurs :

       

      for i in `seq 1 4` ; do
         echo "numéro $i"
      done

      Deuxième syntaxe

      for (( i=0 ; 50 - $i ; i++ )) ; do
         echo $i
      done

       

      Tant que 50 - $i n’est pas égal à zéro, la boucle incrémente i ( i++ )

      Saut d’itération

      Pour sauter directement d’itération sans exécuter code2 :

       

      for VAR in 1 2 3 4 5 ; do
         // code1
         if (condition) ; then
            continue
         fi
         // code2
      done

      WHILE

      La boucle while s’exécute tant que la condition est satisfaite.

       

      while condition ; do
         // OK
      done

       

      exemple :

       

      while [ "$VAR" -ne "$AUTRE" ] ; do
         echo "$VAR pas égal à $AUTRE"
      done

      Plusieurs conditions

      Du plus recommandé au moins recommandé :

       

      while (( stats > 300 || stats == 0 ))

      while (( stats > 300 )) || (( stats == 0 ))

      while [[ $stats -gt 300 || $stats -eq 0 ]]

      while [[ $stats -gt 300 ]] || [[ $stats -eq 0 ]]

      while [ "$stats" -gt 300 ] || [ "$stats" -eq 0 ]

      while [ "$stats" -gt 300 -o "$stats" -eq 0 ]

      Lecture d’une sortie

      Lire chaque ligne du résultat d’une commande :

       

      while read -r LIGNE ; do
         echo "$LIGNE"
      done < <(grep toto fichier.txt)

       

      Lire chaque ligne d’un fichier :

       

      while read -r LIGNE ; do
         echo "$LIGNE"
      done < fichier
      

       

      Quitter la boucle while : break

      Quitter ou sortir de la boucle while : break

       

      while : ; do
         read -p "taper q pour quitter" a
         if [[  $a == "q" ]] ; then
            break
         fi
         echo "Vous avez tapé $a"
      done

      Itérer l’élément suivant : continue

      Aller à l’élément suivant de la boucle while sans continuer le code à l’intérieur de cette même boucle : continue

       

      while [ condition ] ; do
        code 1
        if (condition) ; then
      	continue  procède à l'élément suivant sans passer par code 2
        fi
        code 2
      done

      Quelques exemples

      demande de saisir 26 et continue tant que c’est faux :

       

      VAR=0
      while ((VAR!=26)) ; do
         echo -e "Saisir 26 : \c"
         read VAR
      done

       

      affiche tant que VAR est inférieur à 15 :

       

      VAR=0
      while ((VAR<15)) ; do
         echo "VAR = $VAR"
         ((VAR++))
      done

      Boucle infinie

      while : ; do
         echo "Boucle infinie"
      done

       

      while true ; do
         echo "Boucle infinie"
      done

      UNTIL

      La boucle until s’exécute jusqu’à ce que la condition soit satisfaite

       

      until condition ; do
         // OK
      done

       

      exemple :

       

      until [ "$VAR" -ne "$AUTRE" ] ; do
         echo "$VAR est égal à $AUTRE"
      done

      BOUCLE INFINIE

      for (( ; ; )) ; do
         // code
      done

       

      ou

       

      while true ; do
         // code
      done

       

      ou

       

      while : ; do
         // code
      done

       

      Pour sortir, il faut insérer un break

      SÉQUENCES

      seq

      seq 1001 2 3 4 … 100

      seq -w 100001 002 003 004 … 100

      seq 1 2 101 3 5 7 9

      {a…b}

      echo {1..5}1 2 3 4 5

      echo {0..10..2}0 2 4 6 8 10

       

 

Aucun commentaire

 

Laissez un commentaire