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

Résolu
Munduss Messages postés 43 Statut Membre -  
Munduss Messages postés 43 Statut Membre -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Ton script est parfait pour ce que tu veux faire ;-))
    0
  3. Munduss Messages postés 43 Statut Membre 2
     
    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..)
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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$

    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Munduss Messages postés 43 Statut Membre 2
     
    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)
    0
  7. Munduss Messages postés 43 Statut Membre 2
     
    Merci à vous deux, ça passe avec le -eq !

    Problème résolu! :o)
    0