前几天在MSDN上看到有人用shell写了个电话本程序,为了巩固一下以前学过的, 自己也来弄一个shell电话本[绝非抄袭]。其实不能算一个电话本,因为只有两个域:名字和地址,权当练习,不尽完美之处,请海涵:D
#!/bin/sh
#Date: 2010-08-22
#QQ: 32281309
#MSN: pgj1207@hotmail.com
#Site: www.genepeng.com
function AddUser()
{
while :
do
echo -n “Enter user name: ”
read UserName
if [ “$UserName” = “” ]; then
continue
else
break
fi
done
while :
do
echo -n “Enter Address: ”
read Address
if [ “$Address” = “” ]; then
continue
else
break
fi
done
echo -e “$UserName\t$Address” >> $FileName
}
function QueryUser()
{
echo “Enter user name to query”
while :
do
echo -n “Enter user name: ”
read UserName
if [ “$UserName” = “” ]; then
continue
else
break
fi
done
User=`grep “$UserName\>” < $FileName`
if [ "$User" = "" ]; then
echo "$UserName not exist"
else
echo "$User"
fi
}
function DeleteUser()
{
echo "Enter user name to delete"
while :
do
echo -n "Enter user name: "
read UserName
if [ "$UserName" = "" ]; then
continue
else
break
fi
done
echo "Do you really want to delete $UserName? Y/N"
read YN
if [ "$YN" = "y" -o "$YN" = "Y" ]; then
sed "/$UserName/d" $FileName > “$FileName.tmp”
mv “$FileName.tmp” “$FileName”
fi
}
function EditUser()
{
echo “Enter user name to edit”
while :
do
echo -n “user name: ”
read UserName
if [ “$UserName” = “” ]; then
continue
else
break
fi
done
if IsUserExist $UserName; then
echo “$UserName not exist”
else
sed “/$UserName/d” $FileName > “$FileName.tmp”
mv “$FileName.tmp” “$FileName”
while :
do
echo -n “Enter Address: ”
read Address
if [ “$Address” = “” ]; then
continue
else
echo -e “$UserName\t$Address” >> $FileName
break
fi
done
fi
}
function ListAllUser()
{
cat $FileName
}
function IsUserExist()
{
User=`grep “$1\>” < $FileName`
if [ "$User" = "" ]; then
return 0
else
return 1
fi
}
function ShowMenu()
{
echo "****** Employee Directory ****** "
echo " A : AddUser "
echo " Q : QueryUser "
echo " D : DeleteUser "
echo " E : EditUser "
echo " L : ListAllUser "
echo " X : Exit "
echo "******************************** "
}
#Site: www.genepeng.com
FileName="user_directory.txt"
if [ ! -f $FileName ]; then
> $FileName
fi
while :
do
ShowMenu
read c
case $c in
A|a) AddUser ;;
Q|q) QueryUser ;;
D|d) DeleteUser ;;
E|e) EditUser ;;
L|l) ListAllUser ;;
X|x) break ;;
*) echo “Error: Wrong choice”
continue ;;
esac
done
I have read a few good stuff here. Certainly worth bookmarking for revisiting. I wonder how much effort you put to create such a magnificent informative website.