Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2726 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  if imbriqué ou case

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

if imbriqué ou case

n°411686
_Faust_
Burn-out général
Posté le 18-02-2004 à 00:42:11  profilanswer
 

J'ai le résultat voulu, mais est-ce que c'est de la "programmation correcte" ou c'est mieux avec des "cases". Il me semble d'avoir déja vu que les "if" imbriqués n'était pas la bonne facon....
 
 
 

Code :
  1. #!/bin/bash
  2. operande1=${1:?"Specifiez un nombre"}
  3. operateur=${2:?"Specifiez un operateur"}
  4. operande2=${3:?"Specifiez un deuxieme nombre"}
  5. sum=$(($operande1 + $operande2))
  6. rest=$(($operande1 - $operande2))
  7. if [[ "$operateur" != "+" ]] && [[ "$operateur" != "-" ]]
  8. then
  9. echo -e "operateur non supporte"
  10. else
  11.   if [ "$operateur" = "+" ]
  12.    then
  13.    echo -e "$operande1 + $operande2 = ${sum}"
  14.    else
  15.    [ "$operateur" = "-" ]
  16.    echo -e "$operande1 - $operande2 = ${rest}"
  17.   fi
  18. fi

mood
Publicité
Posté le 18-02-2004 à 00:42:11  profilanswer
 

n°411693
Riot
Buy me a riot
Posté le 18-02-2004 à 01:23:25  profilanswer
 

moi je trouve qu'un case est plus lisible

n°411713
cobra_sa
heuuu c'est quoi le SA
Posté le 18-02-2004 à 04:16:10  profilanswer
 

Perso je pense que le case est plus interressant. Rapidement voila ce que j'aurais fait:
 

Code :
  1. #!/bin/bash
  2. operande1=${1:?"Specifiez un nombre"}
  3. operateur=${2:?"Specifiez un operateur"}
  4. operande2=${3:?"Specifiez un deuxieme nombre"}
  5. sum=$(($operande1 + $operande2))
  6. rest=$(($operande1 - $operande2))
  7. case $operande1 in
  8.       "+" )echo "$operande1 + $operande2 = $sum";break;;
  9.       "-" )echo "$operande1 - $operande2 = $rest";break;;
  10.       *)  echo "operateur non supporte";;
  11. esac
  12. #voila
  13. #
  14. #info1: le -e n'est pas necessaire ici
  15. #info2: $sum et $rest sont deja des resultats les {} ne sont pas necessaires
  16. #info3: j'ai mis des break pour sortir directement du case, sinon le script va tester les conditions qui suivent, hors ici on est sur de n'avoir qu'un choix
  17. #differences:
  18. #     Avec tes if imbriques tu faisais 4 tests minimum, avec le case au max tu en fait 3 donc gain de temp.
  19. #     C'est pas plus claire comme ca???


 
 
 

_Faust_ a écrit :

J'ai le résultat voulu, mais est-ce que c'est de la "programmation correcte" ou c'est mieux avec des "cases". Il me semble d'avoir déja vu que les "if" imbriqués n'était pas la bonne facon....
 
 
 

Code :
  1. #!/bin/bash
  2. operande1=${1:?"Specifiez un nombre"}
  3. operateur=${2:?"Specifiez un operateur"}
  4. operande2=${3:?"Specifiez un deuxieme nombre"}
  5. sum=$(($operande1 + $operande2))
  6. rest=$(($operande1 - $operande2))
  7. if [[ "$operateur" != "+" ]] && [[ "$operateur" != "-" ]]
  8. then
  9. echo -e "operateur non supporte"
  10. else
  11.   if [ "$operateur" = "+" ]
  12.    then
  13.    echo -e "$operande1 + $operande2 = ${sum}"
  14.    else
  15.    [ "$operateur" = "-" ]
  16.    echo -e "$operande1 - $operande2 = ${rest}"
  17.   fi
  18. fi




 

n°411756
aigles
Posté le 18-02-2004 à 09:49:11  profilanswer
 

cobra_sa a écrit :

Code :
  1. #info3: j'ai mis des break pour sortir directement du case, sinon le script va tester les conditions qui suivent, hors ici on est sur de n'avoir qu'un choix




 
Les break sont inutiles, ';;' fait office de break et est obligatoire.
Il n'y a pas moyen, à ma connaissance, d'exécuter deux clauses d'un select.


---------------
Jean Pierre.
n°411763
cobra_sa
heuuu c'est quoi le SA
Posté le 18-02-2004 à 10:05:17  profilanswer
 

autant pour moi je confond avec le java ou le C je sais plus


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  if imbriqué ou case

 

Sujets relatifs
gentoo + kt400 + Geforce3 = moi qui pète une case[Shell] C'est quoi la syntaxe du switch (case) :??:
Linux et case sensitivephp/apache/unix probleme d include imbriqué
Plus de sujets relatifs à : if imbriqué ou case


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR