Agenda de telefone em Shell usando Dialog

Publicado por Anderson Torres 26/10/2005

[ Hits: 13.511 ]

Download ANDY.sh




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

  



Esconder código-fonte

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

Scripts recomendados

Script para verificação do JAVA configurado no PATH

script de compilação do kernel 2.6.38.8 com patch ck3 no ubuntu

rc.hdparm

SImples calculadora em Shell

Grep em loop infinito


  

Comentários
[1] Comentário enviado por sr_monge em 26/10/2005 - 12:47h

kara ! Muito legal essa tua agenda!!!
Gostei mesmo. Dá pra fazer umas melhos. Uma sugestao é colocar uma opçao que mostra todos os contados da agenda.


Mas tá massa essa tu agenda!
Tá show!!! ;-)
Abraços

[2] Comentário enviado por torresa em 27/10/2005 - 06:31h

Tranquilo.. valeu Mr_monge...
Tipo eu até pensei mas tava meio cansado e resolvi postar assim mesmo.. mas vai sair na versão 1.0 hehehhehheh

Valeu mesmo

Torresa

[3] Comentário enviado por yetlinux em 28/09/2006 - 11:22h

Muito bom.
Pergunta: Compensa otimizar trocando os comandos externos para algo 100% shell?

[4] Comentário enviado por Ruy_Go em 18/04/2007 - 14:15h

E quando sai a versao 1.0 ????
hehehehehehe
Abraços

[5] Comentário enviado por phantom1 em 26/09/2008 - 02:41h

meu amigo, quando vou editar um nome percebo q ao finalizar o processo de edicao perco todos os meus contatos, ta ai uma coisa pra melhorar.

[6] Comentário enviado por erickvip em 27/03/2010 - 01:23h

Amigo acima é so colocar um > a mais na linha echo $nome, $fone, $mail > contacts;
ficando assim echo $nome, $fone, $mail >> contacts;
Anderson Obrigado pela dica do dialog, fiz o programinha legal usando isso !!!!!!

[7] Comentário enviado por mrefinski em 10/12/2011 - 16:20h

por acaso poderia me dar uma ajuda, estou tentando fazer algo parecido tipo quando pede para inserir o telefone deixar meio que restrito para que ele use apenas numeros caso ele use letras de um erro, poderia me ajudar? obrigado.

[8] Comentário enviado por vitinho217 em 06/08/2014 - 11:07h

Seria interessante identar o código ...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts