SlideShare uma empresa Scribd logo
1 de 3
Baixar para ler offline
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 é demaisFabrízio Mello
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autenticationCarlos Eduardo
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash scriptRennan 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 testesStanislaw Pusep
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power toolsArmando Reis
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosCRISLANIO 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, dia5garux
 
[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 comandoSCTI UENF
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4garux
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3garux
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2garux
 

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 STM32Marcelo 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
 
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
 
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
 

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

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (8)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

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