Commande select

Résolu/Fermé
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - Modifié par jivef le 27/06/2011 à 07:14
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 - 27 juin 2011 à 23:51
Bonjour,

J'essaie de mettre en place un script utilisant la commande select, mais avant, je voudrais comprendre la syntaxe de cette commande..

Malheureusement, je ne trouve pas le manuel de select.
mobitux:/usr/scripts# man select
No manual entry for select

et passer la commande avec -h ou --help exécute select et attendent une suite avec do.
mobitux:/usr/scripts# select --help
>
mobitux:/usr/scripts# select -h
>

Voici ce que j'ai testé :
Je suis parti d'un exemple d'un bouquin et j'ai ajouté la commande read car dans le bouquin elle n'y était pas et je ne vois pas comment ça peut marcher sans.
De toute façon, avec ou sans, le résultat est le même.
#!/bin/sh  
select choix in "entree" "plat" "dessert" "quitter";  
do   
    read choix ;     (ajout par rapport au bouquin)
    case $choix in   
        entree) echo "votre choix est entree" ;;   
        plat) echo "votre choix est plat" ;;   
        dessert) echo "votre choix est dessert" ;;   
        quitter) echo "salut";exit 0 ;;   
    esac  
done  



Est-ce quelqu'un peut me donner un tuyau sur la syntaxe de cette commande.
Merci par avance.
Jonas.





Une idée reçue est souvent une idée morte.

2 réponses

jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
27 juin 2011 à 07:21
C'est bon, j'ai trouvé tout seul...
J'ai cherché pendant une demi-heure et finalement il y a bien une grosse boulette dans le bouquin.


L'utilisation de read est inutile, par contre, dans la commande case, il faut remplacer le nom de la variable $choix par la variable $REPLY

#!/bin/sh
select choix in "entree" "plat" "dessert" "quitter";
do
case $REPLY in
entree) echo "votre choix est entree" ;;
plat) echo "votre choix est plat" ;;
dessert) echo "votre choix est dessert" ;;
quitter) echo "salut";exit 0 ;;
esac
done
0
Utilisateur anonyme
27 juin 2011 à 08:49
salut

case peut/devrait faire référence à $choix.
$REPLY fait référence au chiffre selectionné

utilise break au lieu de exit.

l'aide de la commande interne select est accessible, par la commande help de bash, dans le man de bash, et dans l'info bash (si info est correctement installé).
0
jivef Messages postés 927 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 12 novembre 2020 306
27 juin 2011 à 23:51
Merci pour l'info.
Jonas.
0