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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Fonction s'appelant elle-même ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction s'appelant elle-même ?

n°812669
kwadbox
Posté le 24-05-2006 à 11:33:01  profilanswer
 

Salut,
 
Mon problème semble simple, mais je ne sais comment le résoudre.  
Je cherche à faire un menu :
 

Code :
  1. function menu(){
  2. # Création d'un menu de sélection
  3. echo "---- Choix du protocole de test -----"
  4. echo "Appuyez sur une touche, puis validez."
  5. echo "1) FTP"
  6. echo "2) HTML"
  7. echo "3) SMTP"
  8. read input
  9. case $input in
  10.  1)
  11.  mesureFTP $1;;
  12.  2)
  13.  echo "choix 2";;
  14.  3)
  15.  echo "choix 3";;
  16.  *)
  17.  echo "Veuillez entrer un chiffre entre 1 et 3, merci..."
  18.                 menu ;; # relance ?
  19. esac
  20. }
  21. menu


 
Mais si j'entre autre chose que 1, 2 ou 3, la fonction, sensé se relancer via l'appel de son nom, ne le fait pas. Comment dois-je procéder ?
 
Merci.


Message édité par kwadbox le 24-05-2006 à 11:34:11
mood
Publicité
Posté le 24-05-2006 à 11:33:01  profilanswer
 

n°812672
stupidduck
Posté le 24-05-2006 à 11:38:06  profilanswer
 

mettre ton code dnas un do .. while avec comme condition dans le while que la touche enfoncée est un 1, 2 ou 3 (ou le contraire, je sais plus)


Message édité par stupidduck le 24-05-2006 à 11:38:42
n°812716
Zaib3k
Posté le 24-05-2006 à 13:26:48  profilanswer
 

la commande select est idéale pour faire ca.


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°812755
kwadbox
Posté le 24-05-2006 à 14:40:36  profilanswer
 

Salut,
 
J'ai opté pour le while...do...done pour la boucle, étant donné que le MAN select n'est pas franchement explicite.
 

Code :
  1. while [ `$input` -ne `1|2|3|q` ];
  2. do
  3.  clear
  4.  echo "---- Choix du protocole de test -----"
  5.  echo "Appuyez sur une touche, puis validez."
  6.  echo "1) FTP"
  7.  echo "2) HTML"
  8.  echo "3) SMTP"
  9.  echo "'q' pour quitter"
  10.  read input
  11. case $input in
  12.  1)
  13.  mesureFTP $1
  14.  bye
  15.  exit 1;;
  16.  2)
  17.  echo "choix 2"
  18.  bye
  19.  exit 1;;
  20.  3)
  21.  echo "choix 3"
  22.  bye
  23.  exit 1;;
  24.  q)
  25.  clear
  26.  echo "Script terminé. Bonne journée."
  27.  exit 1;;
  28. esac
  29. done


 
Merci.

n°812760
kwadbox
Posté le 24-05-2006 à 14:52:55  profilanswer
 

Mieux !
 
Comme je n'ai su rappeler ma fonction, j'ai carrément rappelé le script en lui passant le paramètre en variable.
 

Code :
  1. function menu(){
  2. # Création d'un menu de sélection
  3. echo "---- Choix du protocole de test -----"
  4. echo "Appuyez sur une touche, puis validez."
  5. echo "1) FTP"
  6. echo "2) HTML"
  7. echo "3) SMTP"
  8. echo "'q' pour quitter"
  9. read input
  10. case $input in
  11.  1)
  12.  mesureFTP $1
  13.  bye
  14.  exit 1;;
  15.  2)
  16.  echo "choix 2"
  17.  bye
  18.  exit 1;;
  19.  3)
  20.  echo "choix 3"
  21.  bye
  22.  exit 1;;
  23.  q|Q)
  24.  clear
  25.  echo "Script terminé. Bonne journée."
  26.  exit 1;;
  27.  *)
  28.  echo "Veuillez entrer un chiffre entre 1 et 3. Merci."
  29.  ./`basename 0` $ip;;
  30. esac
  31. }
  32. menu


 
Comme ça, il ne passe pas son temps à faire une boucle (presque) inutile.
 :D


Message édité par kwadbox le 24-05-2006 à 16:09:58
n°812871
Zaib3k
Posté le 24-05-2006 à 18:30:41  profilanswer
 

http://aplawrence.com/Basics/using-select.html
 
google
 
man bash pour les courageux.


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
n°814096
kwadbox
Posté le 29-05-2006 à 12:01:40  profilanswer
 

Ok, merci. Du coup, voilà le menu réalisé :
 

Code :
  1. function menu(){
  2. echo "---- Choix du protocole de test -----"
  3. echo "Appuyez sur une touche, puis validez."
  4. select j in 'ping' 'ftp' 'html' 'html+proxy' 'iperf' 'quit'
  5.  do
  6.   case $j in
  7.    ping)
  8.    mesure logping
  9.    bye
  10.    exit 0;;
  11.    ftp)
  12.    mesure logftp
  13.    bye
  14.    exit 0;;
  15.    html)
  16.    mesure loghtml
  17.    bye
  18.    exit 0;;
  19.    html+proxy)
  20.    mesure logproxy
  21.    bye
  22.    exit 0;;
  23.    iperf)
  24.    mesure logiperf
  25.    bye
  26.    exit 0;;
  27.    quit)
  28.    clear
  29.    echo "Script terminé. Bonne journée."
  30.    exit 0;;
  31.    *)
  32.    echo "Veuillez entrer un chiffre entre 1 et 5. Merci."
  33.    echo "Touche '6' pour quitter, 'ctrl+d' pour interrompre";;
  34.   esac
  35. done
  36. }
  37. menu


 
Il ne me reste plus qu'à élaborer les fonctions de test du réseau.
Mine de rien, ça commence à faire quelques pages (4 pour être précis).
 :jap:


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

  Fonction s'appelant elle-même ?

 

Sujets relatifs
Comment changer la fonction d'une touche[Excel] Ne trouve pas la bonne fonction
(BASH) Deplacer un fichier en fonction de son extension...[Résolu]Problème fonction mail
Petit serveur Apache PHP MySQL. Fonction mail ne marche pas.[fonction linux]
modifier regles iptables en fonction de l'applicationRediriger les connexion locales sur une machine en fonction du port
activer fonction mail() php[C] Problème avec la fonction sqrt [Résolu]
Plus de sujets relatifs à : Fonction s'appelant elle-même ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)