Gestione di una semplice rubrica, con menù di modifica e salvataggio in un file esterno.

#! /bin/bash
# ES. 6
# gestione rubrica telefonica e output nel file rubrica
clear
empty(){
echo " ERR: Il file rubrica non esiste o è vuoto! "
return
}

checkNum(){
[[ $1 =~ ^([0-9]+)$ ]] && return 0;
echo " ERR: \"$1\" non è un numero intero!" && return 1;
}

thereIs () {
[[ -z `egrep ":($1)" rubrica` ]] && echo " \"$1 \" non presente! " && continue
return
}

# scelta menu
echo
PS3="inserisci la scelta: "
select scelta in visualizza inserimento eliminazione cerca_Cognome cerca_Nome Help fine
do
case $REPLY in
1) # visualizza
echo
if [ -s rubrica ]
then
more rubrica
else empty
fi
echo
;;
2) # inserisci INSERIRE CONTROLLI
echo
echo " Inserimento nuovo campo : "
printf "\n Nome: "
read nome
printf " Cognome: "
read cognome
err=0
while [ $err -eq 0 ]
do
printf " Numero: "
read num
checkNum $num
[[ $? -eq 0 ]] && err=1
done

echo "$cognome:$nome:$num" >> rubrica
sort rubrica > temp | mv temp rubrica
;;
3) # elimina
echo
echo -e " eliminazione di un record \n"
printf " inserisci nome: "
read nome
printf " inserisci cognome: "
read cognome
if [ -s rubrica ]
then
# cotrollo esistenza campo
[[ -z `egrep "^($cognome):($nome)" rubrica` ]] && echo " campo \"$cognome:$nome\" non presente " && break
egrep -v "^($cognome):($nome)" rubrica > temp
mv temp rubrica
echo " eliminazione eseguita."
else empty
fi
echo
;;
4) # ricerca cognome
echo
if [ -s rubrica ]
then
printf " inserisci il cognome: "
read cognome
thereIs $cognome
echo && egrep "^($cognome)" rubrica && echo
else empty
fi
echo
;;
5) # ricerca nome
echo
if [ -s rubrica ]
then
printf " inserisci il nome: "
read nome
thereIs $nome
echo && egrep ":($nome)" rubrica && echo
else empty
fi
echo
;;
6)
echo " HELP "
echo "1. visualizza il contenuto di rubrica "
echo "2. inserisci un nuovo record "
echo "3. eliminazione di un record "
echo "4. ricerca per cognome"
echo "5. ricerca per nome "
echo "6. questo help"
echo "7. esci"
;;
7) exit 0 ;;
*) echo " Inserisci un valore adeguato!" ;;
esac

done
exit 0

# gio 29 ott 2009 12:19:55 CET
# tux_errante