cnencaoj7mbp1:shell caoj7$ cat phone.cdb
zhangsan 18899999999
cnencaoj7mbp1:shell caoj7$ cat phone.sh
#!/bin/bash
phone_book="phone.cdb"
menu_choice=""
tmp_file=tmp.$$
trap 'rm -f $phone_book' INT
if [ ! -f "$phone_book" ]; then
touch $phone_book
fi
if [ ! -f "$tmp_file" ]; then
touch $tmp_file
fi
#display menu
menu(){
sleep 1
echo "=================================="
echo "i) insert an entry"
echo "s) search the phone number or owner"
echo "d) delete an entry"
echo "u) update an entry"
echo "l) list all entries"
echo "n) number of entries"
echo "q) quit"
echo -n "Please choose your Options: "
read menu_choice
return
}
#insert an entry
insert() {
echo -n "please input your friend's name and his phone number : "
read entry
echo $entry >> $phone_book
}
#list all entries
list(){
clear
more $phone_book
}
#search by the phone number | owner
search(){
echo -n "input the owner name | phone number : "
read input
#echo $(grep $friend_name $phone_book) #echo `grep $friend_name $phone_book`
entry=$(grep $input $phone_book)
if [ "$entry" = "" ]; then
echo "no this entry...."
else
set $entry
if [ "$input" = "$1" ]; then
echo "phone number is: $2"
else
echo "owner's name is: $1"
fi
fi
}
#get number of entries
getNumber(){
set $(wc -l $phone_book)
number_of_entries=$1
echo "total number of entries = $number_of_entries"
}
#delete an entry according the owner's name | phone No.
delete(){
echo -n "which entry to delete, the owner name | phone number : "
read input
entry=$(grep $input $phone_book)
if [ "$entry" = "" ]; then
echo "no such entry...."
else
grep -v $input $phone_book > $tmp_file
mv $tmp_file $phone_book
fi
}
#update the phone No. by the owner's name
update(){
echo -n "input the person's name who you want to update: "
read name
entry=$(grep $name $phone_book)
if [ "$entry" = "" ]; then
echo "no such entry..."
else
grep -v $name $phone_book > $tmp_file
mv $tmp_file $phone_book
echo -n "please input his/her new phone number :"
read new_phone_number
echo "$name $new_phone_number" >> $phone_book
fi
}
#==================================
menu
while [ $menu_choice != "q" ]
do
case "$menu_choice" in
i) insert;;
s) search;;
d) delete;;
u) update;;
l) list;;
n) getNumber;;
*) echo "wrong input";;
esac
menu
done