¿Cómo crear un menú en un script de shell que muestre 3 opciones que un usuario usará las teclas de flechas para mover el cursor resaltado y presione Intro para seleccionar una?
shell
shell-script
menu
Mrplow911
fuente
fuente
tput
, pero creo que lo primero no es posible), pero puede crear menús simples en bash conselect
: tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_06.htmldialog
paquete que crea interfaces básicas de terminal falsa-GUI en scripts.Respuestas:
El diálogo es una gran herramienta para lo que está tratando de lograr. Aquí está el ejemplo de un menú simple de 3 opciones:
La sintaxis es la siguiente:
La selección se enviará a
stderr
. Aquí hay un script de muestra con 3 colores.En Debian, puede instalar a
dialog
través del paquete del mismo nombre .fuente
Aquí hay una
bash
solución de secuencia de comandos pura en forma deselect_option
función, que se basa únicamente en secuencias de escape ANSI y en la función integradaread
.Funciona en Bash 4.2.45 en OSX. Las partes cobardes que podrían no funcionar igual de bien en todos los ambientes de todo lo que sé son los
get_cursor_row()
,key_input()
(para detectar arriba / abajo) y lascursor_to()
funciones.Aquí hay un ejemplo de uso:
La salida se ve a continuación, con la opción seleccionada actualmente resaltada usando coloración ansi inversa (difícil de transmitir aquí en la reducción). Esto se puede adaptar en la
print_selected()
función si se desea.Actualización: Aquí hay una pequeña extensión que
select_opt
ajusta laselect_option
función anterior para que sea fácil de usar en unacase
declaración:Ejemplo de uso con 3 opciones literales:
También puede mezclar si hay algunas entradas conocidas (Sí y No en este caso), y aprovechar el código de salida
$?
para el caso comodín:fuente