Comparaison multiple de chaine en shell unix

Seb -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    1. Seb
       
      merci pour ta rapidite.
      Super ca marche.

      Mais j'y perd mon latin dans ces conditions ! :-)
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

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

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

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

    => nok !!! :-(
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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