linux 编写一段shell程序,提供菜单显示选项,实现学生成绩的存储、根据用户的输入执行查询、添加功能
展开全部
手工写好了,能加点分吗?
运行有错误,可以继续问我
#!/bin/bash
#------------------------------------------------
trap "GO_IN" 2 3 15
TEST=0
GO_IN()
{
TEST=1
}
#------------------------------------------------
#及时响应模式
read_char()
{
SAVESTTY=`stty -g`
stty raw
stty -echo
dd if=/dev/tty bs=1 count=1 2>/dev/null
stty -raw
stty echo
stty $SAVESTTY
}
#------------------------------------------------
#选择Y or N的操作
choice_yn()
{
STRING_CYN=$1
DEFAULT_ANS=$2
echo "$STRING_CYN[Y/N]:"
ANS=`read_char`
if [ "$ANS" = "" ]
then
ANS=$DEFAULT
fi
case $ANS in
Y|y|YES|yes)
return 0;;
N|n|NO|no)
return 1;;
esac
}
#------------------------------------------------
#退出动作
my_exit()
{
rm *.$$
trap 2 3 15
exit 0
}
#存储内容的文件
file_st=myfile.txt
#------------------------------------------------
#菜单
while :
do
cat <<MAYDAY
----------------------------------------------------------------------------------------------------
1:查询学生名单
2:添加学生名单
3:删除学生名单
Q:Quit
----------------------------------------------------------------------------------------------------
MAYDAY
echo "按提示选择[1-3,Q]>"
CHOICE=`read_char`
case $CHOICE in
1)clear
if [ ! -f $file_st ]
then
echo "对不去,没有添加任何名单!"
else
while read name_1 age_1 sex_1 mark_1
do
echo "$name_1,$age_1,$sex_1,$mark_1"
done<$file_st
fi
;;
2)
clear
P=1
while [ "$P" -eq 1 ]
do
echo "输入学生的姓名:"
read name
if choice_yn "学生姓名为$name,是否保存?" "Y"
then
while [ "$P" -eq 1 ]
do
echo "输入学生的年龄:"
read age
if choice_yn "学生年龄为$age,是否保存?" "Y"
then
while [ "$P" -eq 1 ]
do
echo "输入学生的性别:"
read sex
if choice_yn "学生性别为$sex,是否保存?" "Y"
then
while [ "$P" -eq 1 ]
do
echo "输入名单备注:"
read mark
if choice_yn "名单备注为$mark,是否保存?" "Y"
then
echo "正在保存全部信息,请勿退出...."
echo "$name $age $sex $mark"|tee -a $file_st >/dev/null 2>&1
sleep 3
echo "保存完毕,按任意键返回主菜单...."
P=0
read xssss
else :
fi
done
else :
fi
done
else :
fi
done
else :
fi
done
;;
3)
clear
echo "输入你想删除的信息的学生姓名:"
read delete_name
cat $file_st|grep $delete_name >/dev/null 2>&1
if [ "$?" -eq "1" ]
then
echo "对不起,没有查询到相应的信息!"
else
sed "$delete_name" $file_st>myfile_1.$$
cp myfile_1.$$ $file_st
echo "删除成功!"
fi
;;
Q|q)my_exit;;
*);;
esac
done
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询