Bash & if
Résolu/Fermé
jean
-
18 janv. 2010 à 11:00
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 - 18 janv. 2010 à 13:43
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 - 18 janv. 2010 à 13:43
A voir également:
- If -eq bash
- Retour à la ligne bash ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
- Bash écrire dans un fichier - Forum Shell
- Bingo bash free - Télécharger - Divers Jeux
- If out - Forum Matériel & Système
5 réponses
"
while read line
do
if [ "$line" = "Connection closed by foreign host." ]
then
echo "OK"
fi
done < liste.txt
"
C'est $line que j'ai, et pas $test
while read line
do
if [ "$line" = "Connection closed by foreign host." ]
then
echo "OK"
fi
done < liste.txt
"
C'est $line que j'ai, et pas $test
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
18 janv. 2010 à 11:29
18 janv. 2010 à 11:29
Salut,
Quel est le but final de ton script ?
Parce que si c'est juste pour savoir si le texte (fichier) contient la phrase recherchée, un simple "grep" devrait suffire, non ?
Quel est le but final de ton script ?
Parce que si c'est juste pour savoir si le texte (fichier) contient la phrase recherchée, un simple "grep" devrait suffire, non ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
18 janv. 2010 à 11:58
18 janv. 2010 à 11:58
Tu dois avoir omis de nous préciser quelque chose ;-\
Parce que la syntaxe est la bonne :
Il est où ton tableau dans le fichier ?
Parce que la syntaxe est la bonne :
jp@MDK:~/tmpfs ssh$ cat plop " Next board: press ENTERCoupler INTIPA cr 19, cpl 2, Ghost Eqt 29039 This coupler is not used ! Nb Ip Phones connected to the CPU is: 3880 (1)as1_a> exit logout Connection closed by foreign host. " jp@MDK:~/tmpfs ssh$ while read line;do if [ "$line" = "Connection closed by foreign host." ]; then echo "$line = OK";fi;done < plop Connection closed by foreign host. = OK jp@MDK:~/tmpfs ssh$
Il est où ton tableau dans le fichier ?
ben c'est ça que je ne comprend pas, pour moi la syntaxe est OK !!!
Alors voila le tableau dans liste.txt
"
Mon Jan 18 10:07:23 CET 2010
Coupler INTIPA cr 19, cpl 1, Ghost Eqt 29038
+--------+--------------+--------------------+-+-----+---------------+----+
| QMCDU | Name | Mac Address | |Neqt | Ip Address |
+--------+--------------+--------------------+-+-----+---------------+----+
|61XXXXXX|machin |00:80:xx:xx:xx:xx|S|089xx|126.yyy.yyy.yyy|
|61XXXXXX|truc |00:80:xx:xx:xx:xx|S|099xx|126.yyy.yyy.yyy|
|61XXXXXX|bidule |00:80:xx:xx:xx:xx|S|089xx|126.yyy.yyy.yyy|
+--------+--------------+--------------------+-+-----+---------------+----+---+
In the first single column
S: means sig. channel is supported by this board for these Ip phones
"
etc.
je fais donc
"
while read line
do
if [ "$line" = "|61*" ];
then echo "$line"
#else
#echo "NOK"
fi
done < liste.txt
"
La ça devrait aller non ?
mais même si au lieu de "|61*" je met l'intégralité de la ligne ça ne fonctionne quand même pas
Alors voila le tableau dans liste.txt
"
Mon Jan 18 10:07:23 CET 2010
Coupler INTIPA cr 19, cpl 1, Ghost Eqt 29038
+--------+--------------+--------------------+-+-----+---------------+----+
| QMCDU | Name | Mac Address | |Neqt | Ip Address |
+--------+--------------+--------------------+-+-----+---------------+----+
|61XXXXXX|machin |00:80:xx:xx:xx:xx|S|089xx|126.yyy.yyy.yyy|
|61XXXXXX|truc |00:80:xx:xx:xx:xx|S|099xx|126.yyy.yyy.yyy|
|61XXXXXX|bidule |00:80:xx:xx:xx:xx|S|089xx|126.yyy.yyy.yyy|
+--------+--------------+--------------------+-+-----+---------------+----+---+
In the first single column
S: means sig. channel is supported by this board for these Ip phones
"
etc.
je fais donc
"
while read line
do
if [ "$line" = "|61*" ];
then echo "$line"
#else
#echo "NOK"
fi
done < liste.txt
"
La ça devrait aller non ?
mais même si au lieu de "|61*" je met l'intégralité de la ligne ça ne fonctionne quand même pas
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
jean
18 janv. 2010 à 12:14
18 janv. 2010 à 12:14
Essaie comme ça :
;-))
if [ "$line" \> "|61" ]; then
;-))
jean
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
18 janv. 2010 à 12:17
18 janv. 2010 à 12:17
énorme !!! Merci beaucoup !! une explication peut être ? pour quoi "\>" au lieu de "=" ?
Merci encore !!!
Merci encore !!!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
18 janv. 2010 à 12:21
18 janv. 2010 à 12:21
Voir le man bash (EXPRESSIONS CONDITIONNELLES) :
chaîne_1 == chaîne_2 Vrai si les deux chaînes sont égales. Le symbole = peut servir à remplacer == chaîne_1 != chaîne_2 Vrai si les deux chaînes sont différentes. chaîne_1 < chaîne_2 Vrai si chaîne_1 se trouve avant chaîne_2 dans l'ordre lexi- cographique de la localisation en cours. chaîne_1 > chaîne_2 Vrai si chaîne_1 se trouve après chaîne_2 dans l'ordre lexi- cographique de la localisation en cours.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
midou4u
Messages postés
42
Date d'inscription
lundi 8 décembre 2008
Statut
Membre
Dernière intervention
3 mars 2011
3
18 janv. 2010 à 13:43
18 janv. 2010 à 13:43
a=b veut dire affectation
a = b veut dire une comparaison
a = b veut dire une comparaison