Script bash: traiter une suite d'éléments [Résolu/Fermé]

Signaler
Messages postés
40
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 juin 2010
-
Messages postés
40
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 juin 2010
-
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

Messages postés
18225
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
28 septembre 2020
5 013
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 770
Salut,

Ton script est parfait pour ce que tu veux faire ;-))
Messages postés
40
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 juin 2010
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..)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 770
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$

;-))
Messages postés
40
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 juin 2010
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)
Messages postés
40
Date d'inscription
jeudi 27 novembre 2008
Statut
Membre
Dernière intervention
1 juin 2010
2
Merci à vous deux, ça passe avec le -eq !

Problème résolu! :o)