Comparaison multiple de chaine en shell unix

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...
Configuration: Windows XP
Firefox 3.0.11

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

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

      Mais j'y perd mon latin dans ces conditions ! :-)
  2. Salut merci,

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

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

    => nok !!! :-(
    1. Modérateur
      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 ;-))