Shell : Condition

Résolu
ParMesSoins Messages postés 29 Statut Membre -  
ParMesSoins Messages postés 29 Statut Membre -
Bonjour,
je ne comprend pas pourquoi ce qui suit me retourne OUI et pas NON ???
Merci pour votre aide ;)
sauvegarde_quotidien="oui"
dateV=6

if ([ $dateV -ne 6 ]  ||  [ $dateV -ne 7 ])  &&  [ "$sauvegarde_quotidien" = "oui" ]; then
        {
        echo "OUI"
        }
        else
        {
        echo "NON"
        }
fi

7 réponses

  1. blux Messages postés 2045 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    je crois qu'il faut se méfier du not égal avec un or... essaye avec un and...
    0
  2. ParMesSoins Messages postés 29 Statut Membre 1
     
    mais un AND n'est pas du tout la même condition !!!
    j'avais essayé avec != à la place ne -ne, même problème ;)
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    je dirais que
    (faux ou vrai) et vrai == vrai, donc OUI
    0
  4. ParMesSoins Messages postés 29 Statut Membre 1
     
    alors là je bug !
    pour que = VRAI il faut que tout soit VRAI ... non ?
    si il y a un FAUX, la condition n'est pas respectée.

    pour que ça soit VRAI ,ne faut-il pas :
    (VRAI ou VRAI) et VRAI = VRAI
    si il y un FAUX quelque part ça donne FAUX
    (VRAI ou FAUX) et VRAI = FAUX
    non ???
    0
    1. blux Messages postés 2045 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      essaye avec un &&...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    non, parce que (VRAI ou FAUX) c'est vrai, (VRAI et FAUX) c'est faux
    0
  7. ParMesSoins Messages postés 29 Statut Membre 1
     
    effectivement, ça marche avec AND ;)
    ça dépasse ma logique 8[-)
    0
    1. blux Messages postés 2045 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      N'oublie pas que l'expression entre () sera évaluée de manière logique et non 'par résultat'...

      date ne 6 : faux
      date ne 7 : vrai

      (faux ou vrai) = on ne demande pas si le premier terme est correct et si le deuxième l'est également, mais on se contente de faire une comparaison booléenne et en l'occurrence, vrai ou faux donne vrai

      Le OU booléen (OU non exclusif, s'entend) est défini de cette façon :

      a OU b est VRAI si et seulement si a est VRAI ou b est VRAI, (si a est vrai et que b est vrai aussi, alors a OU b est vrai)

      C'est l'une des premières erreurs qu'on fait en programmation ;-)
      0
  8. ParMesSoins Messages postés 29 Statut Membre 1
     
    Merci ... hic ;)
    0