Comparaison multiple de chaine en shell unix

Fermé
Seb - 21 sept. 2009 à 11:40
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 21 sept. 2009 à 12:16
Bonjour,


y a-t-il un moyen de faire une comparaison multique de chaine en shell unix?, j'ai un truc comme suit:

je voudrais comparer si une variable $VarEntre vaut $a ou $b ou $c, quelle est la commande if...then a faire ?
J'ai essayé:

1ier essai:
if [ "$VarEntre" = "$a|$b|$c" ]
then
echo ok
fi
=> resultat: ca marche pas


2ieme essai
if [ "$VarEntre" = "$a" -o "$VarEntre" = "$b" -o "$VarEntre" = "$c" ]
then
echo ok
fi
=> resultat nok aussi...

Quelqu'un pourrait-il m'aider dessus svp ???
Je craque avec ce shell...

Merci beaucoup par avance pour vos aides...
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
21 sept. 2009 à 11:48
Salut,

Essaie (je n'ai pas testé)
if [ "$VarEntre" = "$a" ] || [ "$VarEntre" = "$b" ] || [ "$VarEntre" = "$c" ] 
ou
echo $VAREntre | grep -oE "$a|$b|$c" && echo ok
0
merci pour ta rapidite.
Super ca marche.

Mais j'y perd mon latin dans ces conditions ! :-)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 sept. 2009 à 11:54
Salut,

Ou bien :
if [[ $var = [abc] ]];then
;-))
0
Salut merci,

j'ai essaye le truc suivant et ca marche pas:

if [ $var = [$a|$b|$c] ]
then
...
fi

=> nok !!! :-(
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
21 sept. 2009 à 12:16
Oups désolé je n'avais pas vu que la comparaison devait se faire sur une autre variable ;-((

Essaye ça :
if [[ $var = [$a$b$c] ]];then 
J'ai testé et ça marche ;-))
0