Shell - comparer chaine de caractère
Résolu
wida
Messages postés
170
Statut
Membre
-
wida Messages postés 170 Statut Membre -
wida Messages postés 170 Statut Membre -
Bonjour,
Dans mon script j'ai deux variables contenant chacune une chaine de caractère.
Pour tester si une chaine est contenu dans une autre j'utiliser la condition suivante :
Mais toutes les deux ne marchent pas même si je suis sur que var1 contient var2.
Quelqu'un a une idée d'ou vient le problème ?
Dans mon script j'ai deux variables contenant chacune une chaine de caractère.
Pour tester si une chaine est contenu dans une autre j'utiliser la condition suivante :
if [ "$var1" = "*$var2" ] ou if [ "$var1" = *"$var2" ]
Mais toutes les deux ne marchent pas même si je suis sur que var1 contient var2.
Quelqu'un a une idée d'ou vient le problème ?
A voir également:
- Shell compare string
- Classic shell - Télécharger - Personnalisation
- Beyond compare - Télécharger - Gestion de fichiers
- Secure shell - Télécharger - Divers Web & Internet
- Vba concatenate string and integer ✓ - Forum VB / VBA
- Shell infrastructure host c'est quoi - Guide
8 réponses
Salut,
Perso j'utiliserai plutôt "grep" et l'analyse du code retour ($?) :
;-))
Perso j'utiliserai plutôt "grep" et l'analyse du code retour ($?) :
$ A=chaine;B="Ma chaine à moi"
$ grep -q "${A}" <<< "${B}"
$ echo $?
0
$ A=chaine;B="Ma chaîne à moi" # J'ai modifié le "î" de chaine
$ grep -q "${A}" <<< "${B}"
$ echo $?
1
$
;-))
Dr.W
Messages postés
406
Statut
Membre
40
Oui voilà, <3 grep , sed & co :P
wida
Messages postés
170
Statut
Membre
17
Merciiii ça marche :DD
salut,
si c'est en bash, alors
si c'est en shell POSIX
si c'est en bash, alors
var1="foo bar baz" var2="baz" if [[ $var1 == *$var2 ]]; then echo "match"; else echo "no match"; fi
si c'est en shell POSIX
if echo "$var1" | grep "$var2" >/dev/null 2>&1; then echo "match"; else echo "no match"; fi
j'utilise les quotes parce que sans j'ai cette erreur :
j'ai essayé maintenant avec -eq, sans quote il donne la même erreur que le = et avec il m'affiche cette erreur :
unary operator expected
j'ai essayé maintenant avec -eq, sans quote il donne la même erreur que le = et avec il m'affiche cette erreur :
integer expression expected
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ahh c'est un '==' qu'il faut
http://www.tech-recipes.com/rx/209/bournebash-shell-scripts-string-comparison/
http://www.tech-recipes.com/rx/209/bournebash-shell-scripts-string-comparison/