#1 Le 14/04/2008, à 08:51
- YvanD
[Résolu] (bash) si une variable contient alors ...
Salut tout le monde !!
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
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
ça marche donc aussi avec non et peut être
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 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 ...
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
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é
"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
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