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 :

Plus de goto dans bash?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut Plus de goto dans bash?
    Salut les gars,
    je suis bien au-dessus de ma tête avec celui-ci ... toute aide serait très appréciée
    J'ai ce code...

    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
    #!/bin/bash
     
    #Comment :
    echo
    echo -e "\e[1;31;42m MENU \e[0m"
    echo "[O] Open file [V] List [D] Erase line [A] Add line | File:$filename"
    read option
    case $option in
        "O" | "o")
            read -p "Type the filename: " filename
            if [ ! -f $filename ]; then
                echo -e "This file doesn\047exist..."
                read -s
            fi
    esac
    Alors, si l'utilisateur appuie sur "O" et le fichier n'existe pas, il est demandé de revenir en arrière, de recharger le menu, et de continuer à partir de ce point.
    Comment je fais ça ? J'ai essayé d'écrire une fonction , mais cela ne fonctionne pas ..... et je ne suis qu'un débutant.
    Merci !

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 335
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ help while
    while: while COMMANDES; do COMMANDES; done
        Exécute des commandes aussi longtemps qu'elles réussissent.
     
        Effectue une expansion et exécute les COMMANDES aussi longtemps
        que la commande finale du « while » se termine avec un code de
        retour à zéro.
     
        Code de sortie :
        Renvoie le code de la dernière commande exécutée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ help until
    until: until COMMANDES; do COMMANDES; done
        Exécute des commandes aussi longtemps qu'un test échoue.
     
        Effectue une expansion et exécute les commandes « COMMANDES »
        aussi longtemps que les commandes de « until » se terminent avec
        un code de retour différent de zéro.
     
        Code de sortie :
        Renvoie le code de la dernière commande exécutée.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    Merci, mais ca me sert a rien, car je ne sais pas encore comment l'appliquer a l'interieur de mon code....

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

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

    en bash, select permet de faire facilement ce que tu veux
    cf. help select.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Par défaut
    Merci beaucoup, je vais essayer avec select.
    Pourtant, le probleme n'est pas generer un menu, mais sauter au debut du script :
    <<...Je dois faire O et le script me demande un nom de fichier. Si le fichier existe, il est accepté et le menu se réaffiche avec cette fois le bon nom de fichier au bout de la ligne. Sinon, un message s'affiche pour notifier l'utilisateur, attendre "enter" puis le menu se réaffiche sans nom de fichier. >>

    Cela fonctionnera peut-être.
    Merci !

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    Citation Envoyé par XavierMtl Voir le message
    Merci, mais ca me sert a rien, car je ne sais pas encore comment l'appliquer a l'interieur de mon code....
    Toute boucle a une condition d'arrêt. Quand arrête-t-on d'afficher le menu ? Parce que ton explication (répétée, en plus, comme si on était mal-comprenant) est mignonne mais tu parles de tout sauf ce dont tu as besoin. Les actions répétées (le corps de la boucle) sont ton menu. La condition d'arrêt de la boucle est absente.

    Juste après le "while", tu écris ta commande de test (pour recommencer ou sortir). Et dans le corps de la boucle, entre "do" et "done", tu écris les actions répétées.

    Facile, non ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    il est possible d'imbriquer plusieurs select.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    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 break et continue
    Salut,

    Juste pour rappeler qu'avec les commandes while, until et for, il existe deux autres commandes complémentaires pouvant aider à ce que tu veux faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ help break
    break: break [n]
        Sort des boucles for, while, ou until.
     
        Sort d'une boucle FOR, WHILE ou UNTIL.  Si N est spécifié, sort de N boucles
        imbriquées.
     
        Code de retour :
        Le code de retour est 0 à moins que N ne soit pas supérieur ou égal à 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ help continue
    continue: continue [n]
        Reprend l'exécution des boucles for, while ou until.
     
        Reprend l'itération suivante de la boucle FOR, WHILE ou UNTIL de niveau supérieur.
        Si N est précisé, reprend à la N-ième boucle supérieure.
     
        Code de sortie :
        Le code de sortie est 0 à moins que N ne soit pas supérieur ou égale à 1.


    Édit : @N_BaH : J'avais mis une balise "code" au départ, mais le côté franchouillard de la chose (à cause des apostrophes) m'a fait choisir la balise "quote". Par contre il est vrai que j'aurais pu séparer les deux commandes

Discussions similaires

  1. Calcul de plus court chemin dans un graphe
    Par Elmilouse dans le forum Prolog
    Réponses: 6
    Dernier message: 21/03/2010, 20h26
  2. utilisation de jump ou de goto dans java
    Par dracula2000 dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2006, 11h27
  3. GOTO en bash ?
    Par byloute dans le forum Linux
    Réponses: 10
    Dernier message: 14/10/2005, 11h06
  4. Réponses: 3
    Dernier message: 06/09/2005, 12h49
  5. [FLASH MX2004] Lire plus de titre dans un player
    Par chodaboy34 dans le forum Flash
    Réponses: 2
    Dernier message: 17/10/2004, 11h45

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