#1 Le 26/09/2008, à 15:10
- Pablo_de_Taix
[RESOLU] Bash et les comparaisons de chaines de caractères
Bonjour,
voilà j'ai un souci avec la comparaison de texte en bash
j'ai fait tous les "echo" console pour suivre le comportement
je ch à comparer une variable lue dans un fichier (ça marche) avec une var initialisée dans un script.
ex
v_quest="typquest"
while read v_dem
do
echo "la demande est du type " $v_dem
if [ "$v_dem" = "$v_quest" ]
then
.................
else
fi
done <$fichd
le parcours du fichier impeccable
les comparaisons donnent toujours pour résultat "faux" et là je suis que c'est une erreur de débutant.
mais laquelle ?
j'ai essayé sur une ligne avec les ; pour le if
j'ai fais les essais avec et sans " pour la variable
je suis a sec d'idées.
Merci de votre aide.
Dernière modification par Pablo_de_Taix (Le 27/09/2008, à 10:18)
Hors ligne
#2 Le 26/09/2008, à 15:41
- whalexis
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Salut,
essaye de remplacer = par -eq
Alexis
#3 Le 26/09/2008, à 15:42
- BorX
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Chez moi (bash), ça marche très bien...
$ essai() {
> if [ "$1" = "$2" ]; then
> echo "yes"
> else
> echo "no"
> fi
> }
$ essai uuuu aaaa
no
$ essai uuuu uuuu
yes
C'est pas une question de casse (majuscule/minuscule) ou une question d'espace superflu dans l'une de tes variables ?
Ajoute ça avant ton if :
echo "v_dem='$v_dem'"
echo "v_quest='$v_quest'"
Dernière modification par BorX (Le 26/09/2008, à 15:45)
Hors ligne
#4 Le 26/09/2008, à 15:56
- Se6
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
En essayant ce code:
#!/bin/sh
v_quest="typquest"
while read v_dem
do
echo "entree: " $v_dem
if [ "$v_dem" = "$v_quest" ]
then
echo "Egal"
fi
done
Ca donne ca:
essai <<EOF
> fe
> typquest
> typques
> hg
> EOF
entree: fe
entree: typquest
Egal
entree: typques
entree: hg
Donc ca marche...
essaye de remplacer = par -eq
Non, -eq teste l'egalite de chaines, = l'egalite numerique.
Se6.
Dernière modification par Se6 (Le 26/09/2008, à 15:59)
Hors ligne
#5 Le 26/09/2008, à 15:58
- Pablo_de_Taix
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Merci à tous,
alors l'essai avec -eq au lieu de = donne des erreurs à l'execution.
la comparaison en terme de casse et de longueur => nickel !!!!!
sous mon Ub 8.04 j'ai mis l'appel de /bin/bash en tete du script c'est correct ?
Hors ligne
#6 Le 26/09/2008, à 16:19
- BorX
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
la comparaison en terme de casse et de longueur => nickel !!!!!
C'est-à-dire ?
que donne ça avant le if ?
echo "v_dem='$v_dem'"
echo "v_quest='$v_quest'"
ça ?
v_dem='typquest'
v_quest='typquest'
ou un truc comme ça ?
v_dem='typquest '
v_quest='typquest'
La différence est subtile, mais peut tout changer...
sous mon Ub 8.04 j'ai mis l'appel de /bin/bash en tete du script c'est correct ?
comme ça, oui :
#!/bin/bash
Un conseil qui te servira toujours... Mets ça au début de ton script pour mieux le déboguer :
set -x
et éventuellement, copie/colle-nous le résultat de l'exécution
Dernière modification par BorX (Le 26/09/2008, à 16:21)
Hors ligne
#7 Le 26/09/2008, à 16:22
- Pablo_de_Taix
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Alors du nouveau.... (pb de version bash ? )
j'ai copié collé le code de "Se6" !!
#!/bin/bash
v_quest="typquest"
while read v_dem
do
echo "entree: " $v_dem
if [ "$v_dem" = "$v_quest" ]
then
echo "Egal"
fi
done
============= et les résultats à l'exécution
command not foundments/test2.txt: line 2:
command not foundments/test2.txt: line 4:
/home/circee81/Documents/test2.txt: line 12: syntax error near unexpected token `done'
/home/circee81/Documents/test2.txt: line 12: `done'
avec !/bin/sh idem !
not founde81/Documents/test2.txt: 2:
not founde81/Documents/test2.txt: 4:
/home/circee81/Documents/test2.txt: 12: Syntax error: "done" unexpected (expecting "then")
on peut deja remarquer les 'drôles' de superposition de messages...
mais SANS les lignes blanches et avec /sh
/home/circee81/Documents/test2.txt: 10: Syntax error: "done" unexpected (expecting "then")
Bon j'aurais pas comme un soucyyyy sur ma bestiole ?
pourtant elle execute d'autres bash et avec le copain CestRon sans rien dire de mal... et elle fait le boulot....
help please !
Hors ligne
#8 Le 26/09/2008, à 17:37
- sebk
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
essaie de lancer la commande dos2unix sur ton fichier.
j'ai déjà eu ce genre de problème en bossant depuis une machine windows vers un serveur linux...
Iceberg Project : www.iceberg-linux.net
Hors ligne
#9 Le 27/09/2008, à 04:15
- Pablo_de_Taix
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Merci sebk,
maiis je voudrais comprendre pourquoi les commandes simples ne "passent" pas. c'est un ubuntu 8 en anglais,
faut il changer de version de "bash" ? comment etre sur de celui (ou ceux ?) installés ?
Apparemment l'intérpréteur de cde ne reconnait pas les lignes blanches ! et ne fait pas les comparaisons, mais le script est enregistré et executé dans l'environnement Linux.
Hors ligne
#10 Le 27/09/2008, à 06:20
- Pablo_de_Taix
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
je viens de faire un test sur autre Ubuntu 8 le script fonctionne, moi qui croyais que c'était des erreurs de syntaxe... perdu !
donc c'est l'intérpréteur "bash" qui va pas.
alors je recadre la demande :"Comment mettre à jour l'intépréteur ? Lequel prendre ? comment savoir celui ou ceux installés "
Merci de m'aider.
Hors ligne
#11 Le 27/09/2008, à 09:27
- fred66100
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Bonjour Pablo_de_Taix
Pourquoi tu ne postes pas un autre topic avec un titre plus proche de ta nouvelle question (règle n° 3 une seule question par topic), tu aura plus de chance d'avoir une réponse.
Tu peut aussi mettre un lien entre les deux topics.
Bon courage pour ta recherche, à +.
Le savoir ne sert à rien s'il n'est pas partagé. Errare humanum est. Cordonnier, pas plus haut que la chaussure.
Hors ligne
#12 Le 27/09/2008, à 10:17
- Pablo_de_Taix
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Bonjour Fred,
ok, je met celui là en résolu,
Merci à tous.
Hors ligne
#13 Le 30/09/2008, à 17:31
- Pablo_de_Taix
Re : [RESOLU] Bash et les comparaisons de chaines de caractères
Bonjour, j'ai trouvé et fait des "contre-tests" pour m'en assurer:
Mon pc interprete mal les mots de clefs du bash et les lignes blanches (entre autres then et else et fi)
le problème est "résolu" en mettant un espace à la fin de chaque mot clef !
bonjour le boulot .....
Merci à tous.
Hors ligne