"if" a multiple argument

Résolu
Bonjour,

j'essai de faire ça :
if [ -z $mode -o $mode="ref"] ;then...
mais ça ne fonctionne pas comme je le voudrai, je n'arrive pas à utilise plusieurs argument de test dans le if, et je ne trouve pas d'exemple. (en espérant que c'est clair).



--
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur

1 réponse

  1. Contributeur
    Salut,

     if [ -z "${mode}" -o "${mode}" = "ref" ] ;then...

    Attention aux espaces avant et après chaque crochet ainsi qu'autour du signe "égale" !
    Les quotes aussi sont très importantes et prendre l'habitude d'entourer ses variables avec des accolades.
    0
    1. Contributeur
      l'espace avant le ] était une erreur de recopie, mais les espaces autour du '=' était bien la cause du problème. Je ne comprend pas ce qu'il fait dans ce cas là et pourquoi il ne met pas de message d'erreur.
      Par contre, les guillemets ne sont pas nécessaire.
      Merci !
      0
    2. Contributeur
      Par contre, les guillemets ne sont pas nécessaire.
      Ils ne sont pas nécessaire entre double crochets, par contre ils sont recommandés entre simple crochet.

      $ B="Un saut
      de ligne"
      
      $ C="${B}"
      
      $ echo "${B}";echo "${C}"
      Un saut
      de ligne
      Un saut
      de ligne
      
      $ echo ${B};echo "${C}"
      Un saut de ligne
      Un saut
      de ligne
      
      $ if [ ${B} = "${C}" ]; then echo "OK"; else echo "Bad"; fi
      bash: [: trop d'arguments
      Bad
      
      $ if [ "${B}" = "${C}" ]; then echo "OK"; else echo "Bad"; fi
      OK
      
      $


      Autre exemple :

      $ V=""
      
      $ [ "${V}" = "" ] && echo "Vide ou non définie" || echo "Inconnue"
      Vide ou non définie
      
      $ [ ${V} = "" ] && echo "Vide ou non définie" || echo "Inconnue"
      bash: [: = : opérateur unaire attendu
      Inconnue
      
      $
      0
    3. Contributeur
      Merci pour la précision.
      La seule chose que je voulais dire, c'est que l'erreur ne venait pas de là.
      0
    4. Contributeur
      Pour l'anecdocte, je n'avais pas modifier, le cas viens de se présenter...
      Bien ait pour moi, ça m'apprendra à coder salement -> une dizaine de fichiers à modifier.
      0
    5. Contributeur
      En général ce genre d'erreur est salutaire.
      C'est d'ailleurs de nos erreurs qu'on apprend le plus paradoxalement ;-))
      0