Agenda em bash e dialog

2,815 views
2,739 views

Published on

Exercício mostrando como construir uma agenda em Bash usando dialog

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,815
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Agenda em bash e dialog

  1. 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.comDIR="/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=dialogif [ ! -d "$DIR" ]then $DIALOG --infobox "Criando diretório do repositório ($DIR) ..." 0 0 mkdir "$DIR" sleep 1fiif [ ! -f "$ARQ" ]then $DIALOG --infobox "Criando base de dados ($BD) ... " 0 0 touch "$ARQ" sleep 1fifunction 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. 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. 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

×