Agenda de telefone em Shell usando Dialog
Publicado por Anderson Torres 26/10/2005
[ Hits: 13.403 ]
Ola galera estava estudando shell em casa e desvendando seus poderes e misterios e acabei desenvolvendo este script.
Na verdade é uma agenda de Telefone usando os comandos do dialog, intuitivo e de facil entendimento, basta conhecer um pouquinho de linguagem de programacão para entender.
Neste script eu usei algumas da funcões abaixo:
1- Menu usando while
2- campos para inserir dados
3- Estruturas de decisão
4- Uso do if e case.
Espero que gostem e se divirtam
Anderson Torres
#!/bin/bash # # Anderson Torres # Analista de Suporte IBM # chocolatet@bol.com.br # #Loop que mostra o menu principal while : ; do # Mostra o menu na tela, com as ações disponíveis resposta=$( dialog --stdout \ --title 'ANDY Agenda' \ --menu 'Escolha uma opcao:' \ 0 0 0 \ 1 'Inserir' \ 2 'Editar' \ 3 'Pesquisar' \ 4 'Apagar' \ 0 'Sair' ) # saindo... [ $? -ne 0 ] && break # De acordo com a opção escolhida dispara funcoes case "$resposta" in # Inserir ################################################################################################## 1) nome=$( dialog --stdout --inputbox 'Digite seu nome:' 0 0 ) # esta parte do programa evita que o programa continue caso o usuario digite 'cancelar' if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] fone=$( dialog --stdout --inputbox 'Digite seu Telefone:' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] mail=$( dialog --stdout --inputbox 'Digite seu Email:' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] dialog \ --title 'Tem certeza?' \ --yesno '\nDeseja realmente inserir este contato?.\n\n' \ 0 0 if [ $? == 0 ]; then echo 'inserindo...'; sleep 1 # Note que se o arquivo não existe o arquivo contacts é criado assim mesmo echo $nome, $fone, $mail >> contacts; echo 'O endereco foi adicionado com sucesso' ; sleep 1 else echo 'Tudo bem sem problemas...'; fi fi fi fi sleep 1 ;; # Editar ################################################################################################ 2) contato=$( dialog --stdout --inputbox 'Digite o contato que deseja editar' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] resultado=$(grep $contato contacts|wc -l) if [ $resultado -eq 0 ]; then echo 'Contato não existe'; sleep 1 elif [ $resultado -gt 1 ]; then echo 'Verificando...' sleep 1 grep $contato contacts; sleep 1 echo echo echo echo echo echo 'O Numero de contatos encontrados excedes os parametros'; echo 'de edicao, por favor seja mais especifico/restritivo'; sleep 4 else grep $contato contacts sleep 2 dialog \ --title 'Tem certeza?' \ --yesno '\nDeseja realmente editar este contato?.\n\n' \ 0 0 if [ $? = 0 ] then nome=$( dialog --stdout --inputbox 'Digite o novo nome:' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] fone=$( dialog --stdout --inputbox 'Digite o novo Telefone:' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] mail=$( dialog --stdout --inputbox 'Digite o novo Email:' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] mv contacts contacts.old; grep -v $contato contacts.old > contacts; rm -f contacts.old; echo $nome, $fone, $mail > contacts; echo modificando...; sleep 1 echo 'Pronto!!' echo O contato $nome echo $fone echo $mail echo Foi Adicionado com sucesso! sleep 4 fi fi fi fi fi fi ;; # Pesquisar ################################################################################################## 3) name=$( dialog --stdout --inputbox 'Digite o Nome do contato:' 0 0 ) if [ $? -eq 1 ]; then echo OK else [ $? -eq 0 ] echo 'Verificando...' busca=$(cat contacts|grep $name) resultbusca=$(cat contacts|grep $name|wc -l) sleep 1 if [ $resultbusca = 0 ]; then echo; echo; echo; echo "O contato não existe!!!" sleep 1 else [ $resultbusca -ge 1 ]; echo "Resultados: $busca"; sleep 5 fi fi ;; # Apagar ################################################################################################## 4) while : ; do # Mostra o menu na tela, com as ações disponíveis #Apagar por registro #Apagar tudo apagar=$( dialog --stdout \ --menu 'Escolha uma opcao:' \ 0 0 0 \ 1 'Apagar registro' \ 2 'Apagar Tudo' \ 0 'Cancelar' ) [ $? -ne 0 ] && break case "$apagar" in 1) echo 'Digite o nome do registro que deseja apagar' read registro echo Verificando ... sleep 1; resultado=$(cat contacts|grep $registro|wc -l) if [ $resultado -eq 0 ]; then echo; echo; echo; echo; echo "O Nome procurado não existe"; sleep 1; elif [ $resultado -gt 1 ]; then cat contacts |grep $registro sleep 1; echo echo echo 'O Numero de contatos encontrados excedes os parametros'; echo 'de delecão por favor seja mais especifico/restritivo'; sleep 5; else cat contacts |grep $registro sleep 2; dialog \ --title 'Tem certeza?' \ --yesno '\nDeseja realmente apagar o contato ?\n\n' \ 0 0 if [ $? -eq 0 ]; then mv contacts contacts.old echo deletando...; grep -v $registro contacts.old > contacts rm -f contacts.old sleep 1; echo pronto; sleep 1 else echo '' fi fi ;; 2) dialog \ --title 'Tem certeza?' \ --yesno '\nDeseja realmente Apagar o arquivo de contatos?\n\n' \ 0 0 if [ $? == 0 ]; then echo "Apagando..." sleep 1 rm -rf contacts; else echo 'O Numero de contatos encontrados excedes os parametros'; echo 'de delecão por favor seja mais especifico/restritivo'; echo "Uffffaaaaaa" ; sleep 1 fi ;; 0) break ;; esac done ;; 0)break ;; esac done ################################################################################################## #################################### FIM ######################################################### # Mensagem final :) echo 'Obrigado por utilizar a ANDY agenda"'
Embaralhando elementos de um vetor
Método para verificar e instalar pacotes
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Preparando pendrive com GNU/Linux [Corretamente!]
Instalando Google Chrome no Fedora 40
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Dificuldade de instalar Apache Office no Zorin17 (0)
alterar o tamanho da tela do monitor via xrandr (1)
Acesso remoto via SSH por Script numa virtualbox (1)
Notebuxo positivo vaio VJFE43F11X Something has gone seriously wrong... (9)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (35)