Menu em formato texto simples em BASH script feito com comando select

Publicado por Perfil removido (última atualização em 04/06/2017)

[ Hits: 7.655 ]

Download menu_em_bash-001.sh




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.

  



Esconder código-fonte

#!/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

Scripts recomendados

Identificando sinal de rede sem fio em modo texto

Baixar vídeos do youtube

Remoção da sessão convidado do Ubuntu 16.04

Mostrar conifguração da placa de rede

Maior ou Menor (script operadores)


  

Comentários
[1] Comentário enviado por albfneto em 09/06/2017 - 18:27h

Bom Isso, Listeiro! Favoritado.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[2] Comentário enviado por uchiha_itachi em 11/06/2017 - 20:53h

Excelente. Bem simples e bem explicado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts