全部博文(489)
分类:
2011-12-22 22:03:54
原文地址:shell应用编程-简单实例 作者:luozhiyong131
#!/bin/bash
#Mini通讯录程序
#Shell语言实现功能简单的通讯录程序
#功能
# 1、新增个人通讯信息
# 2、查看所有通讯信息
# 3、提供两种方法查找某个人通讯信息
# 1)按名字查找
# 2)模糊查找
# 下面两种功能只在按名字查找条件下才能进行
# 4、修改找查到的个人通讯信息
# 5、删除找查到的个人通讯信息
#使用说明按提示一步一步的选择进行操作
#Author: Lzy Time:2011-4-26
#全局变量
menu_choice=""
#主菜单函数定义
set_menu_choice(){
clear #清屏
echo " Mini Address Book"
echo " l) List Book"
echo " a) Add new"
echo " f) Find"
echo " q) Quit"
echo
echo -n "funtion choice: "
read menu_choice
return
}
#待用户确认 确认返回0 否则返回1
sure_or_not(){
echo -n "save?(yes or not): "
while :
do
read X
case $X in
y|yes) return 0;; #返回真
n|not) return 1;;
*) echo "please enter yes/y not/n";;
esac
done
}
#新增个人信息
add_new(){
echo -n "Name: "
read name
echo -n "Phone number: "
read number
echo -n "QQ: "
read qq
echo #换行
temp="${name%" "} ${number%" "} ${qq%" "}" #删除多余的空格符
if sure_or_not #等待用户确认
then
echo $temp >> ".Address_Book" #信息保存
fi
}
#更改个人信息实现函数 信息更新返回0 否则返回1
updata_new(){
echo -n "Name: "
read name
echo -n "Phone number: "
read number
echo -n "QQ: "
read qq
echo #换行
temp="${name%" "} ${number%" "} ${qq%" "}" #删除多余的空格符
if sure_or_not #等待用户确认
then
echo $temp >> ".Address_Book~" #信息保存
return 0
fi
return 1
}
#创建通讯录文件
create_book(){
if [ ! -e .Address_Book ] #判断文件是否存在
then
echo "Name P_number QQ" > .Address_Book #文件信息的格式
fi
}
#修改信息
update_book(){
echo "modification record "
echo " 1) change"
echo " 2) delete"
echo " q) quit"
echo -n "select: "
while :
do
read X
case $X in
1) #修改信息
#其他人信息保存到另一个文件
grep -v "^${name%" "}" .Address_Book > .Address_Book~
if updata_new ;then #信息修改之后并且确认保存
rm -rf .Address_Book
mv .Address_Book~ .Address_Book
else
rm -rf .Address_Book~
fi
return 0 ;; #退出
2) #删除信息
grep -v "^${name%" "}" .Address_Book > .Address_Book~
rm -rf .Address_Book
mv .Address_Book~ .Address_Book
return 0 ;;
q) return ;;
*) echo -n "try again: " ;;
esac
done
}
#按名字查找
find_name(){
echo -n "enter find anme: "
read name
spack=`grep "^${name%" "}" .Address_Book` #在通信录文件中查找名字为name的个人信息
if [ -z "$spack" ] ; then #判断有无相关信息
echo "no informtion"
sleep 2
return
else
echo $spack
read
update_book #修改信息
fi
}
#提供两种查找方式 1按名字查找 2模糊查找
find_person(){
echo
echo " 1) according to name find"
echo " 2) fuzzy find"
echo " q) quit"
echo -n " find ways: "
while true
do
read X
case $X in
1)
find_name #按名字查找
return ;;
2)
echo -n "enter find information: "
read name
grep "${name%" "}" .Address_Book #模糊查找
read
return ;;
q) return ;;
*) echo "try again"
esac
done
}
create_book #创建通讯录文件
while true
do
set_menu_choice #显示主菜单
case ${menu_choice} in
l|L)
cat .Address_Book #查看通讯录信息
read ;; #任意键退出
a)
add_new ;;
f)
find_person ;;
q)
clear
exit 0 ;;
*)
echo -n "entered incorrectly, please retry "
sleep 3 ;; #错误提示显示3s
esac
done
exit 0 #结束终止
一小时——第一部分:Linux&Shell