Sie sind auf Seite 1von 3

Arquivo: /home/marcelo/barao/2008/posrll Script/exercicios/agenda.

sh
#!/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 diretrio do repositrio ($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 vlido" 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()

Pgina 1 de 3

Arquivo: /home/marcelo/barao/2008/posrll Script/exercicios/agenda.sh


{
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
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 vlido" 0 0
continue
else
break
fi
done
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=$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 "\"")

Pgina 2 de 3

Arquivo: /home/marcelo/barao/2008/posrll Script/exercicios/agenda.sh

Pgina 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 telefnica ($VER)" 0

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


${callbacks[$resp]}
done
}
function op_sair()
{
exit 0
}
main

$menu)

Das könnte Ihnen auch gefallen