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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Créer un petit menu dans un script bash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Créer un petit menu dans un script bash

n°399493
ecliptux
Oui. Enfin si peut-être.
Posté le 01-02-2004 à 01:04:51  profilanswer
 

Hello,
 
J'aimerai pouvoir, au sein d'un même script bash, n'exécuter que différentes parties du code en fonction du choix que je fais au début.
En fait j'ai un script de sauvegarde automatisé mais j'aimerai le décomposer en plusieurs étapes.
Au lancement du script, j'aurai un menu du style :
 
1) Création du fichier home.tar.gz
2) Création des fichiers etc.tar.gz et root.tar.gz
3) Gravage du fichier home.tar.gz
4) Gravage des fichiers etc.tar.gz et root.tar.gz
 
Donc pour résumer, j'aimerai connaître la manière de faire des renvois à certaines parties du script et de quitter chaque partie une fois qu'elle est exécutée.
 
Merci :)

mood
Publicité
Posté le 01-02-2004 à 01:04:51  profilanswer
 

n°399501
Riot
Buy me a riot
Posté le 01-02-2004 à 02:24:01  profilanswer
 

http://sciences.univ-pau.fr/dptinf [...] article=62
(sachant que les {{}} sont des balises de mise en forme de l'article, qui n'a pas marché ici)

n°399605
dam1330
...
Posté le 01-02-2004 à 12:11:52  profilanswer
 

c tout simple, tu te sers des IF,
 
si variable = 1
faire ....
si variable = 2
faire ....
 
 
ou bien encore avec des switch case


Message édité par dam1330 le 01-02-2004 à 12:13:01
n°399680
GUG
Posté le 01-02-2004 à 13:31:50  profilanswer
 

j'avais vu une fonction toute faite pour faire un menu ... mais je ne m'en rappelle plus

n°399682
ecliptux
Oui. Enfin si peut-être.
Posté le 01-02-2004 à 13:35:39  profilanswer
 

merci pour vos réponse.
GUG : si tu retrouves cette fonction, je suis preuneur car je n'ai aucune compétence de programmateur :/

n°399834
jijiz
Posté le 01-02-2004 à 17:03:59  profilanswer
 

while
echo "######Voici mon menu######"
echo "Choix 1 tu fais ca blabla"
echo ......
.
.
.
echo "et voila le menu est fini"
echo "Votre chois"
read choix
test a$choix -lt x (x est le nombre de menu + 1)
do
case a$choix in
         1) ton code pour le choix 1;;
         2) ton code pour le choix 2;;
         .
         x-1);;
         x) echo "là c\'est fini";;
         *) echo "tu t\'es trompé banane";;
esac
done


Message édité par jijiz le 01-02-2004 à 20:01:55

---------------
Mon Feedback: http://forum.hardware.fr/hardwaref [...] m#t2928561
n°399835
jijiz
Posté le 01-02-2004 à 17:04:15  profilanswer
 

ecliptux a écrit :

merci pour vos réponse.
GUG : si tu retrouves cette fonction, je suis preuneur car je n'ai aucune compétence de programmateur :/

programmeur. merci


---------------
Mon Feedback: http://forum.hardware.fr/hardwaref [...] m#t2928561
n°399842
ecliptux
Oui. Enfin si peut-être.
Posté le 01-02-2004 à 17:15:15  profilanswer
 

jijiz a écrit :

programmeur. merci


Vivi désolé :D  
 
Merci pour ton aide.
Je devrais m'en sortir :)

n°399847
jijiz
Posté le 01-02-2004 à 17:31:39  profilanswer
 

mais ce fut avec grand plaisir vu que j'ai le partiel unix demain, ca me fait réviser:!


---------------
Mon Feedback: http://forum.hardware.fr/hardwaref [...] m#t2928561
n°399866
aigles
Posté le 01-02-2004 à 17:54:20  profilanswer
 

Pour la partie purement menu, l'instruction 'select' est bien utile.
Pour plus d'info sur 'select' voir le man.
 
Un petit exemple de script utilisant 'select' :

Code :
  1. #!/usr/bin/bash
  2. # Script : choix.sh
  3. PS3="Que voulez vous ? "
  4. select choix in \
  5.    "Premier choix" \
  6.    "Second choix"  \
  7.    "Abandon"
  8. do
  9.    case $REPLY in
  10.       1) echo "C'est du premier choix :"       ;;
  11.       2) echo "Ce n'est que du second choix !" ;;
  12.       3) echo "On abandonne ..."
  13.          break ;;
  14.       *) echo "Choix invalide"  ;;
  15.    esac
  16. done


 
[/fixed]
/home/jp> choix.sh
1) Premier choix
2) Second choix
3) Abandon
Que voulez vous ? 5
Choix invalide
Que voulez vous ?
1) Premier choix
2) Second choix
3) Abandon
Que voulez vous ? 2
Ce n'est que du second choix !
Que voulez vous ? 3
On abandonne ...
/home/jp/Tek-Tips>
[fixed]
 
 
Pour la partie code associée à chaque option du menu, utilise des fonctions.

  • Une fonction doit être définie avant d'être appellée.
  • L'appel à la fonction se fait comme pour une commande externe.
  • Dans le corps de la fonction, $1 $2 ... correspondent aux paramètres passés à l'appel de la fonction.
  • Les paramétres sont passés par valeur
  • Les variables définies à l'extérieur de la fonction sont visibles et modifiables.
  • Des variables locales à la fonction peuvent être créées avec l'instruction 'local'.
  • La sortie de la fonction se fait par 'return n' ou n est le code retour (0)succes). S'il n'y a pas d'instruction 'return' eplicite, la sortie se fait par un 'return $?' implicite lorsque l'exécution du code arrive sur la dernier accolade de la définition de la fonction.


Voici un exemple de fonction avec son utilisation :

Code :
  1. #!/usr/bin/bash
  2. # OuiNon -- Saisie réponse Oui/Non
  3. # Appel:  $1 = Question
  4. #         $2 = Réponse par défaut
  5. # Status: 0  = Oui
  6. #         1  = Non
  7. OuiNon()
  8. {
  9.    local qst def rep
  10.    qst="${1:-'Oui ou Non ? '}"
  11.    def="$2"
  12.    while :
  13.    do
  14.       read -p "$qst" rep || exit 1
  15.       case "$(echo "${rep:-$def}" | tr '[a-z]' '[A-Z]')" in
  16.         O|OUI|Y|YES) return 0 ;;
  17.         N|NON|NO)    return 1 ;;
  18.         "" )          :        ;;
  19.         *)           echo "Réponse invalide: $rep" ;;
  20.       esac
  21.    done
  22. }
  23. # Utilisation de la fonction
  24. if OuiNon "Voulez vous affichez la date ? " Oui
  25.    then  date
  26.    else  echo "Dommage"
  27. fi


 
 
Voici maintenant un exemple de ce que pourrait être ton script (avec utilisation de 'select' et de fonctions) :

Code :
  1. #!/usr/bin/bash
  2. #================================================
  3. # F O N C T I O N S . . .
  4. #================================================
  5. #------------------------------------------------
  6. # Menu - Affichage d'un menu
  7. #------------------------------------------------
  8. # Args : $1    = Titre du menu
  9. #        $2n   = Fonction associée 'n' au choix
  10. #        $2n+1 = Libellé du choix 'n' du menu
  11. #------------------------------------------------
  12. Menu()
  13. {
  14.   local -a menu fonc
  15.   local titre nbchoix
  16.   # Constitution du menu
  17.   if [[ $(( $# % 1 )) -ne 0 ]] ; then
  18.      echo "$0 - Menu invalide" >&2
  19.      return 1
  20.   fi
  21.   titre="$1"
  22.   shift 1
  23.   set "$@" "return 0" "Sortie"
  24.   while [[ $# -gt 0 ]]
  25.   do
  26.      (( nbchoix += 1 ))
  27.      fonc[$nbchoix]="$1"
  28.      menu[$nbchoix]="$2"
  29.      shift 2
  30.   done
  31.   # Affichage menu
  32.   PS3="Votre choix ? "
  33.   while :
  34.   do
  35.      echo
  36.      [[ -n "$titre" ]] && echo -e "$titre\n"
  37.      select choix in "${menu[@]}"
  38.      do
  39.         if [[ -z "$choix" ]]
  40.            then echo -e "\nChoix invalide"
  41.            else eval ${fonc[$REPLY]}
  42.         fi
  43.         break
  44.      done || break
  45.   done
  46. }
  47. #------------------------------------------------
  48. # CHome - Création fichier home.tar.gz
  49. #------------------------------------------------
  50. CHome()
  51. {
  52.    echo -e "\n***\n*** CHome\n***\n"
  53. }
  54. #------------------------------------------------
  55. # CEtcRoot - Création fichiers etc/root.tar.gz
  56. #------------------------------------------------
  57. CEtcRoot()
  58. {
  59.    echo -e "\n***\n*** CEtcRoot\n***\n"
  60. }
  61. #------------------------------------------------
  62. # GHome - Gravage fichier home.tar.gz
  63. #------------------------------------------------
  64. GHome()
  65. {
  66.    echo -e "\n***\n*** GHome\n***\n"
  67. }
  68. #------------------------------------------------
  69. # GEtcRoot - Gravage fichiers etc/root.tar.gz
  70. #------------------------------------------------
  71. GEtcRoot()
  72. {
  73.    echo -e "\n***\n*** GEtcRoot\n***\n"
  74. }
  75. #================================================
  76. # M A I N . . .
  77. #================================================
  78. Menu \
  79.   "+++ Menu Sauvegardes +++"                           \
  80.   CHome    "Création fichier  home.tar.gz"          \
  81.   CEtcRoot "Création fichiers  etc.tar.gz root.tar.gz" \
  82.   GHome    "Gravage  fichier  home.tar.ge"             \
  83.   GEtcRoot "Gravage  fichiers  etc.tar.gz root.tar.gz"



---------------
Jean Pierre.
mood
Publicité
Posté le 01-02-2004 à 17:54:20  profilanswer
 

n°400064
jijiz
Posté le 01-02-2004 à 20:43:43  profilanswer
 

c mieux ma solution,,,, nahhh!


---------------
Mon Feedback: http://forum.hardware.fr/hardwaref [...] m#t2928561
n°400198
apt-get
Posté le 01-02-2004 à 23:55:39  profilanswer
 

GUG a écrit :

j'avais vu une fonction toute faite pour faire un menu ... mais je ne m'en rappelle plus  


 
C'est pas pdmenu ?


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

  Créer un petit menu dans un script bash

 

Sujets relatifs
Mandrake control center : pas de menu Configuration Serveurs [resolu]Mandrake 9.2 apres mise a jour plus de menu programmes ?
serveur, script inscription automatiquesupprimer une ligne dans un fichier texte en bash [résolu]
Qmailadmin, petit soucis...Le petit topic du débutant en carte TV sous linux
table des partitions : petit oubli et question[script sh] tester si une partition est montée?
Créer un répertoire CGI-BINScript + droit root
Plus de sujets relatifs à : Créer un petit menu dans un script bash


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