Agenda em bash e dialog
-
Upload
marcelo-barros-de-almeida -
Category
Technology
-
view
2.384 -
download
0
description
Transcript of Agenda em bash e dialog
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 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 válido" 0 0 continue
elsebreak
fidone
IFSOLD=$IFSIFS=$'\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
elsebreak
fidone
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
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/posr…ll Script/exercicios/agenda.sh Página 3 de 3
lista[$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 telefônica ($VER)" 0 0 0 $menu)
[ "$?" = "1" ] && exit 1
${callbacks[$resp]}done
} function op_sair(){
exit 0} main