Agenda de telefone em Shell usando Dialog

Publicado por Anderson Torres 26/10/2005

[ Hits: 13.525 ]

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

Incluindo lista de IP's nos arquivos de bloqueio do Squid automaticamente

Troca automatica de papel de parade no fluxbox

flvconvert

cpb - Copia arquivos executáveis...

Script para fazer download no rapidshare com conta premium


  

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