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.209 ]
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
Script para média anual de aluno
menu de interação 1 / 7 pt-br facil aprendizado
Atualiza o sistema e instala pacotes no sistema
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









