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.108 ]
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
Interface para tarefas básicas
Instalador de pacotes com dialog atualizado no Github
System Software 2.0 - Instale e remova repositórios e programas de forma simples
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
baschrc customizado pegeui vários. (3)
Rust é o "C da nossa geração"? (8)