IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Shell - Retour au menu principal


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut Shell - Retour au menu principal
    Bonjour,

    Je fais actuellement un script qui execute différentes actions.
    Au debut du script, j'ai fais un menu du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
    Suite à cela, l'utilisateur choisis son action et l'execute, mais ce que je souhaiterais faire, c'est qu'une fois l'action faite, on se retrouve sur le menu et pouvoir executer une autre action ou quitter.

    Si vous pouviez m'aider, ça m'avancerais beaucoup
    Merci d'avance.
    M.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    je suppose donc que tu utilises une structure de type case .... esac....


    cette structure tu peux la mettre dans une fonction, et du coup la rappeler en fin d'action...

    par exemple....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    truc()
    {
    case $pattern in
    1)
       echo "1"
       truc;;
    2)
       echo "2"
       truc ;;
    3) exit 0
       ;;
    esac
    }

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Voir du côté des instructions continue et break

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Voir du côté des instructions continue et break
    bien vu ce sera encore plus souple et pratique.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut
    En effet, j'utilise un case.
    Je vais regarder ça et je re posterais pour le résultat.
    Merci !

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut
    J'ai voulu regarder du côté des instructions continue et break, je n'ais pas très bien compris, du coup, j'ai utilisé la méthode de la fonction et ça fonctionne nikel.

    Merci pour votre aide

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par malik0 Voir le message
    J'ai voulu regarder du côté des instructions continue et break, je n'ais pas très bien compris, du coup, j'ai utilisé la méthode de la fonction et ça fonctionne nikel.

    Merci pour votre aide
    Le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    $ cat foo.sh 
    #! /bin/bash
     
    while :
    do
    echo "
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
    "
     
    read -p "Veuillez choisir une entrée dans le menu : " choix
     
    case "${choix}" in
    1)	echo "Vous avez choisi l'Action 1"
    	continue
    	;;
    2)	echo "Vous avez choisi l'Action 2"
    	continue
    	;;
    3)	echo "Vous avez choisi l'Action 3"
    	continue
    	;;
    4)	echo "Vous avez choisi de quitter... bye bye..."
    	break
    	;;
    *)	echo "Mauvais choix, recommencez s'il vous plaît."
    	continue
    	;;
    esac
    done
    Le résultat (les 3 actions (1 2 3), une erreur (5) et la sortie (4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    $ ./foo.sh 
     
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
     
    Veuillez choisir une entrée dans le menu : 1
    Vous avez choisi l'Action 1
     
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
     
    Veuillez choisir une entrée dans le menu : 2
    Vous avez choisi l'Action 2
     
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
     
    Veuillez choisir une entrée dans le menu : 3
    Vous avez choisi l'Action 3
     
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
     
    Veuillez choisir une entrée dans le menu : 5
    Mauvais choix, recommencez s'il vous plaît.
     
    [1] Action 1
    [2] Action 2
    [3] Action 3
    [4] Quitter
     
    Veuillez choisir une entrée dans le menu : 4
    Vous avez choisi de quitter... bye bye...
     
    $

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 731
    Par défaut
    Bonjour,

    mais pourquoi ne pas utiliser select ?

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Citation Envoyé par N_BaH Voir le message
    mais pourquoi ne pas utiliser select ?
    Perso parce que quand j'ai vraiment commencé à m'intéresser au shell bash (2002-2003), select n'existait pas et était réservé au shell ksh.

    Après difficile d'abandonner certains automatismes

  10. #10
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    mais pourquoi ne pas utiliser select ?
    question subsidiaire il existe partout (outils gnu installés bien sur) le select ?

  11. #11
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 731
    Par défaut
    Citation Envoyé par frp31
    question subsidiaire il existe partout (outils gnu installés bien sur) le select ?
    non.
    Je me souvenais l'avoir aperçu dans la norme POSIX, mais, après vérification, il y est écrit, en gros, que cette commande est optionnelle, et que son comportement n'est pas défini.
    dash ne propose pas select.

    Cependant, select semble exister avant BASH_2.05 (version à partir de laquelle son comportement s'est rapproché de celui connu sur KSH).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/02/2007, 13h18
  2. Menu principal et click sous menu
    Par angiosfr dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/11/2005, 22h38
  3. [formulaire] Menu principal
    Par ahmbil dans le forum IHM
    Réponses: 6
    Dernier message: 22/10/2005, 11h06
  4. [formulaire] Menu principal
    Par ahmbil dans le forum IHM
    Réponses: 1
    Dernier message: 20/10/2005, 17h59
  5. barre de menu principal
    Par norfelt dans le forum IHM
    Réponses: 10
    Dernier message: 27/10/2003, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo