建立stu.txt内容:
100:张三:男:计算机 101:张红:女:文秘 102:张飞:男:体育 103:张婷:女:英语 104:张海洋:男:机电
题目要求:有文本文件stu.txt,该文件是所有学生的信息,每个学生存储一行信息,信息格式如下:学号:姓名:性别:专业 如(100:张三:男:计算机)设计一个shell,名称为stu.sh,该shell完成如下功能:
1)当输入stu.sh时,列出所有记录内容
2)当输入 stu.sh -a 100:张三:男:计算机 时,首先判断100记录是否存在,如果不存在,则把该信息写入文件,如果存在,则给出提示,并输出文件中学号为100的该行信息
3)当输入 stu.sh -d 100时,首先判断100记录是否存在,如果不存在,给出提示,如果存在,则提示用户确认是否要删除记录,如用户输入y或者yes,则删除文件中学号为100的该行信息,如果用户输入n或no时,则不做删除操作
4)当输入 stu.sh -s 100时,首先判断100记录是否存在,如果不存在,给出提示,如果存在,则输出文件中学号为100的该行信息
5)当用户输入的选项不正确时,给出错误提示,并输入该shell的用法
data="stu.txt"; sid="学号"; sname="姓名"; ssex="性别"; smajor="专业"; help(){ echo "不加参数,显示所有记录"; echo "-a 添加记录"; echo "-d 删除记录"; echo "-s 搜索记录"; } if [ $# -eq 0 ]; then printf "%-s\t%-s\t%-s\t%-s\n" $sid $sname $ssex $smajor; #cat $data |awk -F ":" '{printf("%-s\t%-s\t%-s\t%-s\n",$1,$2,$3,$4);}';二选一 cat $data|tr ':' '\t'; exit; fi case $1 in -a) if ! grep -q $2 $data 2>&1; then echo $2>>$data; exit; else echo "存在"; printf "%-s\t%-s\t%-s\t%-s\n" $sid $sname $ssex $smajor; echo $2|tr ':' '\t'; fi ;; -d) if ! grep -q $2 $data 2>&1; then echo "记录不存在。。"; exit; else read -p "确定要删除?(y/n)" confirm; if [ $confirm == "y" -o $confirm == "yes" ]; then sed -i "/$2/d" $data 2>&1; elif [ $confirm == "n" -o $confirm == "no" ]; then echo "用户取消"; else echo "错误的输入"; fi fi ;; -s) if ! grep -q $2 $data 2>&1; then echo "记录不存在。。"; exit; else printf "%-s\t%-s\t%-s\t%-s\n" $sid $sname $ssex $smajor; #sed -n "/$2/p" $data |tr ':' '\t'; grep $2 $data|tr ':' '\t'; fi ;; *) help ;; esac