Shell savoir si une chaine contient une variables

Fermé
julien - 24 oct. 2012 à 15:55
 julien - 25 oct. 2012 à 15:51
Bonjour a tous ^^

voila je débute en shell et je voudrais savoir comment on peut identifier une variable dans une chaine, par exemple: chaine=azerty variable=y comment savoir si azerty contient y? voila merci d'avance.



A voir également:

5 réponses

dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 618
24 oct. 2012 à 16:32
hello
avec =~
$ chaine="azerty"
$ v="y"
$ [[ "$chaine" =~ "$v" ]] && echo contient || echo ne contient pas
contient
$ v="a"
$ [[ "$chaine" =~ "$v" ]] && echo contient || echo ne contient pas
contient
$ v="b"
$ [[ "$chaine" =~ "$v" ]] && echo contient || echo ne contient pas
ne contient pas
$ 
2
salut,

== peut suffire: l'expression à trouver n'est pas très compliquée
$ chaine="azerty" 
$ v="y" 
$ [[ $chaine == *$v* ]] && echo contient || echo ne contient pas
même avec =~ (voire surtout avec =~) il ne faut pas mettre les variables entre guillemets.
0
merci pour cette réponse rapide, mais ça me met "commande introuvable." ne doit ton pas mettre des comparateurs tels que -lt ou -gt lorsqu'il s'agit de chaines?
0
Utilisateur anonyme
25 oct. 2012 à 08:07
-lt, -gt, etc, sont des opérateurs arithmétiques.
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 618
Modifié par dubcek le 25/10/2012 à 07:46
ton shell est bien bash ?
respecter les espaces
on ne veut pas comparer mais savoir si la chaine contient, d'où le =~
0
si je met ça [ $chaine =~ $v ] il me dit "opérateur binaire attendu." et si je colle comme ceci [ $chaine=~$v ] il le trouve tout le temps, même lorsque je rentre des chiffres par exemple.(il n'y a que des lettres dans $chaine). avec la syntaxe de qqchquicommenceparQ, il ne trouve jamais le caractère.
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 618
25 oct. 2012 à 14:40
il y a 2 [[ ]] [[ $chaine =~ $v ] ]
0
au temps pour moi. sa vire l'erreur opérateur, mais du coup il ne trouve pas le caractère.
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 618
25 oct. 2012 à 15:41
$ chaine="azerty"
$ v="a"
$ [[ "$chaine" =~ $v ]] && echo contient || echo ne contient pas
contient
$ v="b"
$ [[ "$chaine" =~ $v ]] && echo contient || echo ne contient pas
ne contient pas
$ 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bon g trouvé un truc qui fonctionne pour le moment. c avec grep :
[ $(grep $v <<< $chaine) ]
0