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 :

Menu avec select sur plusieurs lignes


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 144
    Points : 112
    Points
    112
    Par défaut Menu avec select sur plusieurs lignes
    Bonjour,
    je crée un menu avec select et un fichier texte:
    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
     
    #! /bin/bash
     
    old_IFS=$IFS
    IFS=$'\n'
     
    PS3="
    Q - Quitter
     
    N° de l'opération à exécuter ou quitter (Q) : "
     
    clear
    echo -e "Menu\n"
     
    select LIGNE in $(cat /db2data/shell/menu/menu.lst | cut -d":" -f1 | sort)
     do
      case $REPLY in
       Q|q) exit 0
       ;;
       *) eval $(grep "$LIGNE" /db2data/shell/menu/menu.lst | cut -d":" -f2)
       break
       ;;
      esac
     done
    IFS=$old_IFS
    Le fichier texte contient 5 lignes et je m'attendais donc à un menu sur 5 lignes. Et bien, non! Voici le menu généré par select:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Menu
     
    1) Copie Prod          3) Restauration        5) Sauvegarde online
    2) Reorg et Runstats   4) Sauvegarde offline
     
    Q - Quitter
     
    N° de l'opération à exécuter ou quitter (Q) :
    Est-ce que j'ai oublié quelque chose ou bien ai-je mis quelque chose qui perturbe le select? Comment faire pour n'avoir qu'une colonne?

    Je vous remercie par avance de vos lumières.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 440
    Points
    19 440
    Par défaut
    Bonjour,

    C'est le comportement de select que j'ai toujours observé.
    si ça ne te plaît pas, crée ta propre fonction select.

    mets des guillemets autour de l'IFS que tu sauvegardes.
    mais pourquoi sauvegarder l'IFS si tu ne le restaures qu'à la fin du script ?

    cat est inutile (uuoc).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 144
    Points : 112
    Points
    112
    Par défaut
    Merci N_BaH.
    Ok pour select mais ce comportement n'est pas le même quand on l'utilise en dehors d'un script.
    Sinon, j'ai vérifié et ce sont les espaces dans le fichier source qui induit ce comportement.
    Ok pour les guillemets.
    Je sauvegarde IFS pour un retour à la normale vis à vis du shell à l'issue du script.
    Ne pas me servir de cat: ok mais comment fais-je alors?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 403
    Points
    28 403
    Par défaut
    Citation Envoyé par jfox Voir le message
    Ne pas me servir de cat: ok mais comment fais-je alors?
    cut accepte un nom de fichier en paramètre !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select LIGNE in $(cut -d":" -f1 /db2data/shell/menu/menu.lst | sort)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 144
    Points : 112
    Points
    112
    Par défaut
    autant pour moi. Merci!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 440
    Points
    19 440
    Par défaut
    Je sauvegarde IFS pour un retour à la normale vis à vis du shell à l'issue du script.
    ce n'est pas la peine : le script est exécuté dans un sous-shell, qui ne peut pas influencer celui depuis lequel il est lancé.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Mars 2003
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 144
    Points : 112
    Points
    112
    Par défaut
    Merci à tous.

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

Discussions similaires

  1. Select sur plusieurs lignes
    Par MimiWoOlf dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/11/2014, 18h03
  2. Recherche avec critères sur plusieurs lignes
    Par affro-jojo dans le forum Requêtes
    Réponses: 10
    Dernier message: 28/06/2011, 18h36
  3. select sur plusieurs lignes
    Par lcaya dans le forum SQL
    Réponses: 1
    Dernier message: 03/11/2009, 11h43
  4. Bouton radio sur plusieur ligne avec Border layout
    Par Bason_sensei dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 03/05/2006, 16h03
  5. []Menu sur plusieurs lignes
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/09/2005, 15h55

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