- Gerar link
- Outros aplicativos
Postagem em destaque
- Gerar link
- Outros aplicativos
Os scripts em sua maioria são desenvolvidos para receber argumentos via linha de comando durante sua chamada e que determinam o comportamento do mesmo por todo o processo. Porém, em alguns casos é necessário que o usuário especifique qual ação ou opção é mais adequada para uma determinada tarefa no atual momento e é através do menu textual que essas opções são apresentadas, criando uma interação programa/usuário.
Vou apresentar duas abordagens para criação de menu textuais e quão práticos podem ser.
1. while + case + read
Aplica um loop infinito para manter a exibição constante das opções, enquanto o comando read lê o primeiro caractere digitado que posteriormente é verificado pelo case que executa o bloco equivalente a opção selecionada.
#!/bin/bash # Loop infinito. while :; do # limpa a tela clear # Menu echo ===== DATA/HORA ===== echo echo '1) Exibir hora.' echo '2) Exibir data.' echo '3) Sair.' # Lê somente o primeiro caractere digitado. read -n1 -p 'Opção: ' opc echo # Verifica o valor armazenado em 'opc' e # executa o bloco referente. case $opc in 1) printf 'Hora: %(%H:%M:%S)T\n';; 2) printf 'Data: %(%d/%m/%Y)T\n';; 3) break;; # Interrompe o loop e finaliza a exibição do menu. *) echo 'OPÇÃO INVÁLIDA !!' esac read -p 'Pressione qualquer tecla para voltar...' done echo 'Saindo...'
2. select + case
O select (builtin) é um comando especifico para esse tarefa e já acompanha rotinas que substitui algumas das implementações anteriores, entre as quais está o controle de loop para manter o menu ativo e a leitura e atribuição automática da opção selecionada.
#!/bin/bash # Inicializa um array com as opções do menu. opcoes=('Exibir hora.' 'Exibir data.' 'Sair.') # limpa a tela clear # Menu echo ===== DATA/HORA ===== echo # Lista os elementos contidos em 'opcoes'. select opc in "${opcoes[@]}"; do # Verifica o valor armazenado em 'opc' e # executa o bloco referente. # Fica armazenado em cada vetor em 'opc' o texto literal da opção e é # através do qual é feito a validação. # # Exemplo: # ${opcoes[0]} = Exibir hora. # ${opcoes[1]} = Exibir data. # ${opcoes[2]} = Sair. # case $opc in ${opcoes[0]}) printf 'Hora: %(%H:%M:%S)T\n';; ${opcoes[1]}) printf 'Data: %(%d/%m/%Y)T\n';; ${opcoes[2]}) break;; # Finaliza o select. *) echo 'OPÇÃO INVÁLIDA !!' esac read -p 'Pressione qualquer tecla para voltar...' done echo 'Saindo...'
Participe compartilhando a experiência de perguntar e responder questões pertinentes ao shell script, afim de promover a troca de informações e conhecimentos.
Acesse nosso fórum clicando aqui
Comentários
Postar um comentário