linux操作系统课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统II(实践)期末作业(Linux Shell 程序设计)
学院:
专业:
班级:
学号:
姓名:
2011年6月3日
一、所用仪器、材料。
PC一台
Redhat linux 5.5
二、实验内容:
有文本文件student.txt,该文件是所有学生的信息,每个学生存储一行信息,信
息格式如下
学号:姓名:性别:专业如(101:张三:男:计算机)
设计一个shell,名称为student.sh,该shell完成如下功能:
1) 当输入 student.sh -a 101:张三:男:计算机时,首先判断101记录是否
存在,如果不存在,则把该信息写入文件,如果存在,则给出提示,并输出文
件中学号为101的该行信息
2) 当输入 student.sh -d 101 时,首先判断101记录是否存在,如果不存在,
给出提示,如果存在,则提示用户确认是否要删除记录,如用户输入y或者yes,
则删除文件中学号为101的该行信息,如果用户输入n或no时,则不做删除
操作
3) 当输入 student.sh -s 101 时,首先判断101记录是否存在,如果不存在,
给出提示,如果存在,则输出文件中学号为101的该行信息
4) 当输入 student.sh时,输出文件的全部内容
5) 当用户输入的选项不正确时,给出错误提示,并输入该shell的用法,如
(student.sh -q 123456)
三、实验代码:
#!/bin/bash
#student.sh
# Define the 'FILENAME'
declare FILENAME="student.txt"
################################################################# ####
# Usage of this shell
usage()
{
echo "Usage: student.sh [OPTION] [STDID:NAME:SEX:MAJOR|STDID]"
echo "Notice:"
echo " This shell program need to create a file \"student.txt\""
echo "in current directory. If it does not exist, the shell will"
echo "create it."
echo ""
echo "[OPTION]"
echo " without parameter, shell will show all data of student."
echo " -a, --add a student"
echo " -d, --delete a student"
echo " -s, --search a student"
echo ""
echo " STDID: must be 3 numbers, for example: 001."
echo " NAME: must be consist of letters at least one."
echo " SEX: must be one value of following: F, f, M, m."
echo " MAJOR: limit is the same with NAME."
echo ""
echo " Example:"
echo " Add a student named Tom, his STDID is 002, major is Math."
echo " e.g. student.sh -a 002:Tom:M:Math"
echo " Delete the student STDID is 002."
echo " e.g. student.sh -d 002"
echo " Search the student STDID is 002."
echo " e.g. student.sh -s 002"
}
################################################################# ####
# Usage for parameter '-a'
usage1()
{
echo "The parameter '-a' need a value: STDID:NAME:SEX:MAJOR"
echo "e.g. student.sh -a 002:Tom:M:Math"
}
################################################################# ####
# Usage for parameter '-d'
usage2()
{
echo "The parameter '-d' need a value: STDID"
echo "e.g. student.sh -d 001"
}
################################################################# ####
# Usage for parameter '-s'
usage3()
{
echo "The parameter '-s' need a value: STDID"
echo "e.g. student.sh -s 001"
}
################################################################# ####
# Show information of all student
# Without parameter
showalldata()
{
echo "========================================="
echo " Welcom to Student Shell"
echo "========================================="
echo "NO STDID NAME SEX MAJOR"
awk -F: '{OFS="\t"}{print NR,$1,$2,$3,$4;}' $FILENAME
# Another way to print data of file
# for student in `cat $FILENAME`
# do
# echo -e ${student//:/"\t"}
# done
}
################################################################# ####
# Search a given STDID
# If find it , return 0, or return 1
# With parameter: STDID
findstd()
{
local tno=`awk -F: '$1 ~ /'$1'/ {print $1}' $FILENAME`
if [ -z "$tno" ]; then
return 1
else
return 0
fi