Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/04/2008, à 08:51

YvanD

[Résolu] (bash) si une variable contient alors ...

Salut tout le monde !! wink

Je voudrais savoir quelle commande faut-il utiliser pour savoir si oui ou non une variable ($variable) CONTIENT (et non pas correspond à)  un groupe de mot ??
En fait j'utilise "zenity --list ..." pour créer $variable mais il me créé par exemple : "oui|non|peut-être"

Je voudrai faire après :
if [ $variable = oui ]
then
echo "Vous avez coché Oui"
fi

Mais ça marche pas car la $variable est aussi constituée de "|non|peut-être".
Comment faire ??
J'espère que j'ai été assez clair.

Dernière modification par YvanD (Le 14/04/2008, à 10:28)

Hors ligne

#2 Le 14/04/2008, à 08:59

Ras'

Re : [Résolu] (bash) si une variable contient alors ...

if [[ `echo $var | grep -o "oui"` = "oui" ]] ;
then echo "vous avez coché oui"
fi

wink

grep -o permet de chercher des expressions et ne sort en résultat que l'expression recherchée. les ` (alt 7) permettent de remplacer ce qu'il y a entre par le résultat de la commande à l'intérieur wink
ça marche donc aussi avec non et peut être wink


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#3 Le 14/04/2008, à 09:06

wblitz

Re : [Résolu] (bash) si une variable contient alors ...

sa variable ne contient plus "oui", mais "|non|peut-être". essaie plutôt avec ça :

test=`echo $variable | grep -v non | grep -v "peut-être"`
if [ -z "$test" ]
then
     echo "Vous avez coché oui"
fi

après tu fais parail avec non :

test=`echo $variable | grep -v oui | grep -v "peut-être"`

et peut-être :

test=`echo $variable | grep -v oui | grep -v non`

"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#4 Le 14/04/2008, à 09:19

Ras'

Re : [Résolu] (bash) si une variable contient alors ...

non non je confirme que ce que j'ai fait ne change aucunement le contenu de la variable :

ras@ras-laptopoulos:~$ var="oui|non|peut être"
ras@ras-laptopoulos:~$ echo $var
oui|non|peut être
ras@ras-laptopoulos:~$ if [[ `echo $var | grep -o "oui"` = "oui" ]] ; then echo OK ; else echo "NOK" ;fi
OK
ras@ras-laptopoulos:~$ echo $var
oui|non|peut être

Et ta solution ne fonctionne pas non plus, tu as oublié d'enlever les pipes ^^

Dernière modification par Raskal (Le 14/04/2008, à 09:19)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#5 Le 14/04/2008, à 09:29

wblitz

Re : [Résolu] (bash) si une variable contient alors ...

edit : une version un peu condensée avec egrep au lieu de grep

var="oui|non|peut être"

sa variable vaut : "|non|peut être"... comme indiqué dans son post wink donc non, ta solution ne fonctionne pas.

Et ta solution ne fonctionne pas non plus, tu as oublié d'enlever les pipes ^^

"et pourtant, elle tourne !"

toto@hagrid:~$ variable="|non|peut-être"
toto@hagrid:~$ test=`echo $variable | egrep -v "(non|peut-être)"`
toto@hagrid:~$ if [ -z "$test" ]
> then
>      echo "Vous avez coché oui"
> fi
Vous avez coché oui
toto@hagrid:~$

donc pour les deux autres cas :

egrep -v "(oui|peut-être)"

et :

egrep -v "(oui|non)"

Dernière modification par wblitz (Le 14/04/2008, à 09:37)


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#6 Le 14/04/2008, à 09:51

Ras'

Re : [Résolu] (bash) si une variable contient alors ...

YvanD a écrit :

Mais ça marche pas car la $variable est aussi constituée de "|non|peut-être".

Ah c'est ça qui vous tracasse !
Moi dans cette phrase j'ai compris que le test ne marche pas parce que la variable contient "|non|peut-être" en plus de oui (d'ou le "aussi" dans sa phrase)

Bref, avec toutes ces solutions il aura le choix quelque soit la demande originale lol

Dernière modification par Raskal (Le 14/04/2008, à 09:51)


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#7 Le 14/04/2008, à 09:55

wblitz

Re : [Résolu] (bash) si une variable contient alors ...

hum ... je vais reprendre du café big_smile


"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs

Hors ligne

#8 Le 14/04/2008, à 10:05

YvanD

Re : [Résolu] (bash) si une variable contient alors ...

Merci beaucoup pour vos réponses nombreuses et rapides .. Je vais les tester

Hors ligne

#9 Le 14/04/2008, à 10:25

YvanD

Re : [Résolu] (bash) si une variable contient alors ...

Ça marche avec la méthode de Raskal, merci bien, je met "résolu".

Hors ligne

#10 Le 14/04/2008, à 10:31

Ras'

Re : [Résolu] (bash) si une variable contient alors ...

\o/

Thé 1 - 0 Café
^^


Va t'faire shampouiner par le compteur_V2 en timezone[Canada/Eastern] !
 
Les types awesome n'ont rien à prouver. À personne.
'k bye là

Hors ligne

#11 Le 14/04/2008, à 11:00

Alain.g

Re : [Résolu] (bash) si une variable contient alors ...

salut

Raskal a écrit :

if [[ `echo $var | grep -o "oui"` = "oui" ]] ; then

cette syntaxe est inutilement compliquée.

Ceci revient au même :

if echo $var | grep -q 'oui' ; then

ou encore

if [[ $var = *oui* ]] ; then

Xubuntu Karmic !

Hors ligne