Comment créer un menu dans un script shell qui affichera 3 options qu'un utilisateur utilisera les touches fléchées pour déplacer le curseur de surbrillance et appuyez sur Entrée pour en sélectionner une?
shell
shell-script
menu
Mrplow911
la source
la source
tput
, mais je pense que le premier n'est pas possible), mais vous pouvez créer des menus simples en bash avecselect
: tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_06.htmldialog
paquet qui crée des interfaces de terminal de base faux GUI dans des scripts.Réponses:
la boîte de dialogue est un excellent outil pour ce que vous essayez de réaliser. Voici l'exemple d'un menu simple à 3 choix:
La syntaxe est la suivante:
La sélection sera envoyée à
stderr
. Voici un exemple de script utilisant 3 couleurs.Sur Debian, vous pouvez installer
dialog
via le paquet du même nom .la source
Voici une
bash
solution de script pur sous la forme de laselect_option
fonction, reposant uniquement sur les séquences d'échappement ANSI et la fonction intégréeread
.Fonctionne sur Bash 4.2.45 sur OSX. Les pièces funky qui pourrait ne pas fonctionner aussi bien dans tous les environnements de tout ce que je sais les
get_cursor_row()
,key_input()
(pour détecter touches haut / bas) et lescursor_to()
fonctions.Voici un exemple d'utilisation:
La sortie ressemble à ci-dessous, avec l'option actuellement sélectionnée mise en évidence en utilisant la coloration inverse ansi (difficile à transmettre ici dans le démarque). Cela peut être adapté dans la
print_selected()
fonction si vous le souhaitez.Mise à jour: Voici une petite extension
select_opt
enveloppant laselect_option
fonction ci-dessus pour la rendre facile à utiliser dans unecase
instruction:Exemple d'utilisation avec 3 options littérales:
Vous pouvez également mélanger s'il existe des entrées connues (Oui et Non dans ce cas) et exploiter le code de sortie
$?
pour le cas générique:la source