Menu em formato texto simples em BASH script feito com comando select
Publicado por Perfil removido (última atualização em 04/06/2017)
[ Hits: 8.355 ]
Hoje será feita uma explanação sobre como montar menus em BASH script usando o comando select.
O comando "select" permite a criação de um menu bem rudimentar em modo texto, sem o recurso de caixas de texto, como as do aplicativo de terminal dialog, que aparecem em certos momentos na instalação e configuração de distros como Slackware e Debian.
Em certos momentos já vi aparecer no processo de configuração do Debian, em linha de comando, um prompt de escolha de opção, muito semelhante ao que aparecerá logo abaixo, quando "select" é usado.
Ele cria um sistema de verificação de variável, através de opções numéricas em loop com prompt, que dispensa o uso de comandos como read, while e for. Vem tudo num pacote só.
A única coisa requerida dentro da estrutura "select ... do ... done" é uma outra estrutura, a de decisão, que pode ser feita pelos comandos "if ... then ... elif ... else ... fi", "case ... esac" ou até por concatenação usando o comando test e os operadores de concatenação de execução de comandos && e ||.
Ao se executar este código, aparece o seguinte texto na tela:
=== MENU EM BASH ===
1) inclusao
2) alteracao
3) exclusao
4) consulta
5) sair
#?
Na primeira linha há um anúncio do que se trata: um menu em BASH. Obviamente.
A partir daí há a exibição das opções do menu, com itens enumerados de 1 a 5, representando um hipotético cadastro.
Para ser um programa de verdade, falta a elaboração do código de gerenciamento de cadastro de dados, como o de uma agenda, por exemplo. É um sistema exemplificado que pode ser implementado no futuro, sendo feito apenas o menu por agora.
A última linha representada pelos caracteres #? representa o prompt, que espera pelo número da opção. No caso um dos números de 1 a 5.
Ao digitar os números de 1 a 5, a variável declarada no "select" ganha a atribuição do texto ao lado do número no menu. Este texto vai para a estrutura "case ... esac" que analisa o que fazer. Para as opções de 1 a 5 é verificado se o valor da variável i corresponde a uma das opções: inclusao, alteracao, exclusao, consulta, sair e o coringa * (otherwise ou default em outras linguagens) para qualquer outro caso.
Conforme a alternativa corresponda, é emitido apenas um texto de aviso sobre a opção selecionada. Exceto pela opção 5, que emite a mensagem e sai do programa. Esta saída é feita pelo comando break, que força a retirada da estrutura "select", como é feito quando se usa for e while (lá em cima está escrito que select dispensa loop com for e while, lembram?)
No caso de a opção digitada ser diferente de uma das opções de 1 a 5 é emitida a mensagem de erro, solicitando nova tentativa.
Conforme explicado. usando a opção 5 a mensagem de saída é exibida e o comando break força a saída do "select". Como só há o comando exit 0, o programa é encerrado retornando o valor 0 para o sistema operacional.
#!/bin/bash echo "=== MENU EM BASH ===" select i in inclusao alteracao exclusao consulta sair do case "$i" in inclusao) echo "inclui usuario" ;; alteracao) echo "altera usuario" ;; exclusao) echo "exclui usuario" ;; consulta) echo "consulta usuario" ;; sair) echo "saindo do programa" break ;; *) echo "opcao invalida, tente de novo" ;; esac done exit 0
Converter todas as imagens de um diretório v2.0
Script automatizado de Atualização e Instalação de Programas no Ubuntu
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Usando o --load-average no Gentoo para evitar OOM Kill
Instalando o COSMIC DE no Gentoo (systemd)
Centralizar Logo com Transparência via ImageMagick
Ajudante para criar dicas e artigos no VOL (1)
O que você está ouvindo agora? [2] (228)
Midia de instalação LM-21.3 não inicializa [RESOLVIDO] (15)
Reunir material [RESOLVIDO] (4)
Uma pergunta bem simples mas não achei resposta (ainda) [RESOLVIDO] (4)









