Script bash: traiter une suite d'éléments

Résolu
Bonjours,

J'ai une chaine de n chiffres séparés par des espace: 7 3 4 5 ... 4 1

Je recherche le premier 2 ou 3 mettons.

j'aimerai pouvoir les traiter dans une boucle.

Avec une chaine présentée comme celle qui suit j'aurais fait:

7
3
4
5
...
4
1


for chiffre in $chaine 
do 
 if [ $chiffre==2 ] then 
  echo "blabla" 
  break 
 elif [ $chiffre==3 ] then 
  echo "blublu"
  break 
 fi 
done


Pouvez vous m'indiquer comment faire l'équivalent sur la première chaine, ou comment transformer la première chaine en la seconde? (J'ai fait des essais avec awk mais j'ai pas réussi.. :( )

A+

6 réponses

  1. Modérateur
    Salut,

    Ton script est parfait pour ce que tu veux faire ;-))
    1. Et bien ça ne fonctionne pas avec la première chaine. La boucle ne passe qu'une fois! :(

      (Avec CentOS, je sais pas si ça a de l'importance..)
      1. Modérateur
        jp@MDK:~/tmpfs ssh$ cat foo.sh
        #! /bin/sh
        
        #set -xv
        
        chaine="1 5 7 3 6 2 0"
        
        for i in ${chaine}
        do
        if [ "${i}" = "2" ]
        then echo "Chiffre 2 trouvé."
        break
        elif [ "${i}" = "3" ]
        then echo "Chiffre 3 trouvé."
        break
        else
        echo "Chiffre ${i}, on continue..."
        continue
        fi
        done
        
        jp@MDK:~/tmpfs ssh$ ./foo.sh
        Chiffre 1, on continue...
        Chiffre 5, on continue...
        Chiffre 7, on continue...
        Chiffre 3 trouvé.
        
        jp@MDK:~/tmpfs ssh$

        ;-))
        1. Tain c'est fou ça! Mais pourquoi ça marche pas chez moi... Mhhhh.. <_<

          Je vais au taff, on va bien voir sur place et je te tiens au courant!

          Merci pour l'aide quoi qu'il en soit! :o)
          1. Contributeur
            hello
            ou comme ça
            $ ./z1
            blublu
            $ 
            $ cat z1
            #!/bin/bash
            
            chaine="7 3 4 5 2 4 1"
            
            for chiffre in $chaine 
            do 
             if [ $chiffre -eq 2 ] ; then 
              echo "blabla" 
              break 
             elif [ $chiffre -eq 3 ] ; then 
              echo "blublu"
              break 
             fi 
            done
            $ 
            1. Merci à vous deux, ça passe avec le -eq !

              Problème résolu! :o)