Shell - comparer chaine de caractère
Résolu
wida
Messages postés
150
Date d'inscription
Statut
Membre
Dernière intervention
-
wida Messages postés 150 Date d'inscription Statut Membre Dernière intervention -
wida Messages postés 150 Date d'inscription Statut Membre Dernière intervention -
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
- Vba concatenate string and integer ✓ - Forum VB / VBA
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - 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
390
Date d'inscription
Statut
Membre
Dernière intervention
40
Oui voilà, <3 grep , sed & co :P
wida
Messages postés
150
Date d'inscription
Statut
Membre
Dernière intervention
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/