agendaembashedialog-121211151239-phpapp02.pdf

3
Arquivo: /home/marcelo/barao/2008/posr…ll Script/exercicios/agenda.sh Página 1 de 3 #!/bin/bash # Marcelo Barros de Almeida # [email protected] 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()

Transcript of agendaembashedialog-121211151239-phpapp02.pdf

  • Arquivo: /home/marcelo/barao/2008/posrll Script/exercicios/agenda.sh Pgina 1 de 3#!/bin/bash# Marcelo Barros de Almeida# [email protected] 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 diretrio do repositrio ($DIR) ..." 0 0 mkdir "$DIR" sleep 1

    fi if [ ! -f "$ARQ" ]then

    $DIALOG --infobox "Criando base de dados ($BD) ... " 0 0touch "$ARQ"sleep 1

    fi function op_listar(){

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

    } 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 vlido" 0 0 continue

    elsebreak

    fidone

    IFSOLD=$IFSIFS=$'\n'res=$(cat $ARQ | grep $nome)IFS=$IFSOLDif [ "$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/posrll Script/exercicios/agenda.sh Pgina 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 vlido" 0 0 continue

    elsebreak

    fidonetel=""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 vlido" 0 0 continue

    elsebreak

    fidone

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

    return

    } function op_apagar(){

    IFSOLD=$IFSIFS=$'\n'lista=( $(cat $ARQ) )op=""n=0for linha in ${lista[*]}do

    entrada=$( echo $linha | tr " " "_" )op="$op $n $entrada off "let n=n+1

    doneIFS=$IFSOLD

    resp=$($DIALOG --stdout --checklist "Marque os nomes que deseja apagar" \

    0 0 0 $op)

    if [ "$resp" = "" ]then

    returnfi

    for n in $respdo

    idx=$(echo $n | tr -d "\"")

  • Arquivo: /home/marcelo/barao/2008/posrll Script/exercicios/agenda.sh Pgina 3 de 3lista[$idx]=""

    done

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

    IFSOLD=$IFSIFS=$'\n'

    for linha in ${lista[*]}do

    echo "$linha" >> $TMPdoneIFS=$IFSOLD

    mv $ARQ $BKPmv $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 telefnica ($VER)" 0 0 0 $menu)[ "$?" = "1" ] && exit 1

    ${callbacks[$resp]}

    done } function op_sair(){

    exit 0} main