SlideShare uma empresa Scribd logo
Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh               Página 1 de 3

#!/bin/bash
# Marcelo Barros de Almeida
# marcelobarrosalmeida@gmail.com

DIR="/home/marcelo/.agenda"
BD="agenda.txt"
ARQ="$DIR/$BD"
BKP="$DIR/$BD.bkp"
TMP="$DIR/$BD.tmp"
VER="V0.1"

main_menu=( "Listar" "Pesquisar" "Incluir" "Apagar" "Sair" )
callbacks=( op_listar op_pesquisar op_incluir op_apagar op_sair )

DIALOG=dialog

if [ ! -d "$DIR" ]
then
     $DIALOG --infobox "Criando diretório do repositório ($DIR) ..." 0 0
     mkdir "$DIR"
     sleep 1
fi

if [ ! -f "$ARQ" ]
then
     $DIALOG --infobox "Criando base de dados ($BD) ... " 0 0
     touch "$ARQ"
     sleep 1
fi

function op_listar()
{

    $DIALOG --title "Nome|Telefone" --textbox "$ARQ" 0 0
    return
}

function op_pesquisar()
{
    nome=""
    while [ "$nome" = "" ]
    do
        nome=$( $DIALOG --stdout --inputbox "Nome ou telefone a procurar:" 0 30 )

           [ "$?" = "1" ] && return

           nome=$(echo "$nome" | tr "|" "_" )

           if [ "$nome" = "" ]
           then
                $DIALOG --msgbox "Insira valor válido" 0 0
                continue
           else
                break
           fi
    done

    IFSOLD=$IFS
    IFS=$'n'
    res=$(cat $ARQ | grep $nome)
    IFS=$IFSOLD

    if [ "$res" = "" ]
    then
         $DIALOG --title "Resultados da pesquisa para $nome" 
             --msgbox "Nenhum resultado encontrado." 0 0
    else
         $DIALOG --title "Resultados da pesquisa para $nome" --msgbox "$res" 0 0
    fi
}

function op_incluir()
Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh               Página 2 de 3

{
    nome=""
    while [ "$nome" = "" ]
    do
        nome=$( $DIALOG --stdout --inputbox "Entre o nome:" 0 30 )

           [ "$?" = "1" ] && return

           nome=$(echo "$nome" | tr "|" "_" )

           if [ "$nome" = "" ]
           then
                $DIALOG --msgbox "Insira um nome válido" 0 0
                continue
           else
                break
           fi
    done

    tel=""
    while [ "$tel" = "" ]
    do
        tel=$( $DIALOG --stdout --inputbox "Entre o telefone:" 0 30 )

           [ "$?" = "1" ] && return

           tel=$(echo "$tel" | tr "|" "_" )

           if [ "$tel" = "" ]
           then
                $DIALOG --msgbox "Insira um telefone válido" 0 0
                continue
           else
                break
           fi
    done

    reg="$nome | $tel"
    echo $reg >> $ARQ
    $DIALOG --infobox "Nova entrada adicionada.nNome: $nomenTelefone: $tel" 0 0
    sleep 0.25

    return
}

function op_apagar()
{
    IFSOLD=$IFS
    IFS=$'n'
    lista=( $(cat $ARQ) )

    op=""
    n=0
    for linha in ${lista[*]}
    do
         entrada=$( echo $linha | tr " " "_" )
         op="$op $n $entrada off "
         let n=n+1
    done
    IFS=$IFSOLD

    resp=$($DIALOG --stdout --checklist "Marque os nomes que deseja apagar" 
            0 0 0 $op)

    if [ "$resp" = "" ]
    then
         return
    fi

    for n in $resp
    do
        idx=$(echo $n | tr -d """)
Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh                          Página 3 de 3

              lista[$idx]=""
       done

       [ -f $TMP ] && rm $TMP
       touch $TMP

       IFSOLD=$IFS
       IFS=$'n'

       for linha in ${lista[*]}
       do
            echo "$linha" >> $TMP
       done
       IFS=$IFSOLD

       mv $ARQ $BKP
       mv $TMP $ARQ
}

function main()
{
    while [ : ]
    do
        numops=${#main_menu[@]}
        menu=""
        for i in $(seq 0 $((numops-1)) )
        do
             op=$( echo ${main_menu[$i]} | tr " " "_" )
             menu="$menu $i $op "
        done

              resp=$($DIALOG   --stdout --menu "Agenda telefônica ($VER)" 0   0   0   $menu)

              [ "$?" = "1" ] && exit 1

              ${callbacks[$resp]}
       done

}

function op_sair()
{
    exit 0
}

main

Mais conteúdo relacionado

Mais procurados

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
Fabrízio Mello
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autentication
Carlos Eduardo
 
programação c 8 9_aula
programação c 8 9_aulaprogramação c 8 9_aula
programação c 8 9_aula
Christopher Cerqueira
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash script
Rennan Cockles
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testes
Stanislaw Pusep
 
A Revolução dos Middlewares
A Revolução dos MiddlewaresA Revolução dos Middlewares
A Revolução dos Middlewares
Paulo Eduardo Rezende
 
Python Class
Python ClassPython Class
Python Class
Romualdo Andre
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
Armando Reis
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivos
CRISLANIO MACEDO
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
Sérgio Silva
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
garux
 
[SCTI 2011] - CLI: sobrevivendo na linha de comando
[SCTI 2011] - CLI: sobrevivendo na linha de comando[SCTI 2011] - CLI: sobrevivendo na linha de comando
[SCTI 2011] - CLI: sobrevivendo na linha de comando
SCTI UENF
 
JasperReports
JasperReportsJasperReports
JasperReports
Vitor Mattos
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4
garux
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
garux
 
Shell script i
Shell script iShell script i
Shell script i
Carlos Melo
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2
garux
 
Aula5
Aula5Aula5

Mais procurados (18)

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autentication
 
programação c 8 9_aula
programação c 8 9_aulaprogramação c 8 9_aula
programação c 8 9_aula
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash script
 
Proxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testesProxy, Man-In-The-Middle e testes
Proxy, Man-In-The-Middle e testes
 
A Revolução dos Middlewares
A Revolução dos MiddlewaresA Revolução dos Middlewares
A Revolução dos Middlewares
 
Python Class
Python ClassPython Class
Python Class
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivos
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
[SCTI 2011] - CLI: sobrevivendo na linha de comando
[SCTI 2011] - CLI: sobrevivendo na linha de comando[SCTI 2011] - CLI: sobrevivendo na linha de comando
[SCTI 2011] - CLI: sobrevivendo na linha de comando
 
JasperReports
JasperReportsJasperReports
JasperReports
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Shell script i
Shell script iShell script i
Shell script i
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2
 
Aula5
Aula5Aula5
Aula5
 

Mais de Marcelo Barros de Almeida

[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
Marcelo Barros de Almeida
 
Projeto de Hardware com Microcontroladores STM32
Projeto de Hardware com Microcontroladores STM32Projeto de Hardware com Microcontroladores STM32
Projeto de Hardware com Microcontroladores STM32
Marcelo Barros de Almeida
 
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Marcelo Barros de Almeida
 
Administração de Redes Linux - III
Administração de Redes Linux - IIIAdministração de Redes Linux - III
Administração de Redes Linux - III
Marcelo Barros de Almeida
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
Marcelo Barros de Almeida
 
Administração de Redes Linux - I
Administração de Redes Linux - IAdministração de Redes Linux - I
Administração de Redes Linux - I
Marcelo Barros de Almeida
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Marcelo Barros de Almeida
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Marcelo Barros de Almeida
 
Treinamento Qt básico - aula III
Treinamento Qt básico - aula IIITreinamento Qt básico - aula III
Treinamento Qt básico - aula III
Marcelo Barros de Almeida
 
Treinamento Qt básico - aula II
Treinamento Qt básico - aula IITreinamento Qt básico - aula II
Treinamento Qt básico - aula II
Marcelo Barros de Almeida
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
Marcelo Barros de Almeida
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
Marcelo Barros de Almeida
 
Tutorial sobre iptables
Tutorial sobre iptablesTutorial sobre iptables
Tutorial sobre iptables
Marcelo Barros de Almeida
 

Mais de Marcelo Barros de Almeida (20)

[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[9/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[8/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[7/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[5/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[4/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[3/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
[2/9] Sistemas embarcados de alto desempenho para tratamento e processamento ...
 
Projeto de Hardware com Microcontroladores STM32
Projeto de Hardware com Microcontroladores STM32Projeto de Hardware com Microcontroladores STM32
Projeto de Hardware com Microcontroladores STM32
 
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
Criando Placas Eletrônicas com KiCAD (Marcelo Barros)
 
Administração de Redes Linux - III
Administração de Redes Linux - IIIAdministração de Redes Linux - III
Administração de Redes Linux - III
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
 
Administração de Redes Linux - I
Administração de Redes Linux - IAdministração de Redes Linux - I
Administração de Redes Linux - I
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Treinamento Qt básico - aula III
Treinamento Qt básico - aula IIITreinamento Qt básico - aula III
Treinamento Qt básico - aula III
 
Treinamento Qt básico - aula II
Treinamento Qt básico - aula IITreinamento Qt básico - aula II
Treinamento Qt básico - aula II
 
Treinamento Qt básico - aula I
Treinamento Qt básico - aula ITreinamento Qt básico - aula I
Treinamento Qt básico - aula I
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Tutorial sobre iptables
Tutorial sobre iptablesTutorial sobre iptables
Tutorial sobre iptables
 

Último

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
Jonathas Muniz
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 

Último (7)

TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 

Agenda em bash e dialog

  • 1. Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh Página 1 de 3 #!/bin/bash # Marcelo Barros de Almeida # marcelobarrosalmeida@gmail.com DIR="/home/marcelo/.agenda" BD="agenda.txt" ARQ="$DIR/$BD" BKP="$DIR/$BD.bkp" TMP="$DIR/$BD.tmp" VER="V0.1" main_menu=( "Listar" "Pesquisar" "Incluir" "Apagar" "Sair" ) callbacks=( op_listar op_pesquisar op_incluir op_apagar op_sair ) DIALOG=dialog if [ ! -d "$DIR" ] then $DIALOG --infobox "Criando diretório do repositório ($DIR) ..." 0 0 mkdir "$DIR" sleep 1 fi if [ ! -f "$ARQ" ] then $DIALOG --infobox "Criando base de dados ($BD) ... " 0 0 touch "$ARQ" sleep 1 fi function op_listar() { $DIALOG --title "Nome|Telefone" --textbox "$ARQ" 0 0 return } function op_pesquisar() { nome="" while [ "$nome" = "" ] do nome=$( $DIALOG --stdout --inputbox "Nome ou telefone a procurar:" 0 30 ) [ "$?" = "1" ] && return nome=$(echo "$nome" | tr "|" "_" ) if [ "$nome" = "" ] then $DIALOG --msgbox "Insira valor válido" 0 0 continue else break fi done IFSOLD=$IFS IFS=$'n' res=$(cat $ARQ | grep $nome) IFS=$IFSOLD if [ "$res" = "" ] then $DIALOG --title "Resultados da pesquisa para $nome" --msgbox "Nenhum resultado encontrado." 0 0 else $DIALOG --title "Resultados da pesquisa para $nome" --msgbox "$res" 0 0 fi } function op_incluir()
  • 2. Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh Página 2 de 3 { nome="" while [ "$nome" = "" ] do nome=$( $DIALOG --stdout --inputbox "Entre o nome:" 0 30 ) [ "$?" = "1" ] && return nome=$(echo "$nome" | tr "|" "_" ) if [ "$nome" = "" ] then $DIALOG --msgbox "Insira um nome válido" 0 0 continue else break fi done tel="" while [ "$tel" = "" ] do tel=$( $DIALOG --stdout --inputbox "Entre o telefone:" 0 30 ) [ "$?" = "1" ] && return tel=$(echo "$tel" | tr "|" "_" ) if [ "$tel" = "" ] then $DIALOG --msgbox "Insira um telefone válido" 0 0 continue else break fi done reg="$nome | $tel" echo $reg >> $ARQ $DIALOG --infobox "Nova entrada adicionada.nNome: $nomenTelefone: $tel" 0 0 sleep 0.25 return } function op_apagar() { IFSOLD=$IFS IFS=$'n' lista=( $(cat $ARQ) ) op="" n=0 for linha in ${lista[*]} do entrada=$( echo $linha | tr " " "_" ) op="$op $n $entrada off " let n=n+1 done IFS=$IFSOLD resp=$($DIALOG --stdout --checklist "Marque os nomes que deseja apagar" 0 0 0 $op) if [ "$resp" = "" ] then return fi for n in $resp do idx=$(echo $n | tr -d """)
  • 3. Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh Página 3 de 3 lista[$idx]="" done [ -f $TMP ] && rm $TMP touch $TMP IFSOLD=$IFS IFS=$'n' for linha in ${lista[*]} do echo "$linha" >> $TMP done IFS=$IFSOLD mv $ARQ $BKP mv $TMP $ARQ } function main() { while [ : ] do numops=${#main_menu[@]} menu="" for i in $(seq 0 $((numops-1)) ) do op=$( echo ${main_menu[$i]} | tr " " "_" ) menu="$menu $i $op " done resp=$($DIALOG --stdout --menu "Agenda telefônica ($VER)" 0 0 0 $menu) [ "$?" = "1" ] && exit 1 ${callbacks[$resp]} done } function op_sair() { exit 0 } main