实验三shell脚本程序设计Word格式.docx
- 文档编号:13857282
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:10
- 大小:862.58KB
实验三shell脚本程序设计Word格式.docx
《实验三shell脚本程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《实验三shell脚本程序设计Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
三、实验要求
1、做好实验预习,通过查找资料、阅读系统提供的帮助文件等多种渠道了解本实验所使用的SHELL命令及各种技术方法。
充分利用所学知识,预设多种实现思路。
2、写出实验报告,内容是:
⑴简要说明实验的目的、任务与设备。
⑵写出实验步骤、实现的技术手段及关键代码。
⑶在给定实验数据的基础上给出相应的输出结果。
⑷总结实验中遇到的问题及解决方法。
⑸写出实验心得与收获。
四、实验内容
本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL程序的设计方法和技术。
内容如下:
⑴创建以下菜单程序:
USER:
****HOST:
********DATE:
**/**/20**
A:
创建子目录并测试
B:
文件查找
C:
文件权限测试及统计
D:
文件创建与复制
E:
文件内容修改
Q:
退出系统
———————————————————————————————
A:
在用户家目录下创建名字为你学号后四位数字的子目录,其存取权限为(drwxr-xr-x)。
测试确认目录存在,输出提示。
B:
在/dev目录下查找由sd开头且文件名由3个字符组成的文件,找到后用file命令显示其文件类型;
显示当前系统中所有变量和Shell函数。
C:
测试当前用户对系统中某文件是否有r、w、x的权限,输出测试结果。
统计/dev目录下块设备文件和字符设备文件的数目;
统计date命令的
帮助手册中空行的个数。
D:
用长格式(ls-l)显示目录/dev中所有符号链接文件,将输出结果排序后写入文件file1,将输出结果的后3行排序后写入file2文件;
使用comm命令将两个文件的共有行写入文件file3。
将file1、file2两文件拷入上面新创建的子目录中,最后将文件file2截断为大小为0的空文件。
File1有内容。
File2为空,本来有三行。
如下:
E:
将file1文件中的字符“-”删除,再将字符“>
”用“”替换,修改后写入新文件newf1。
判断上述操作成功后显示新文件newf1的内容。
源代码如下:
#!
/bin/bash
#menu
USER=`whoami`
THIS_HOST=`hostname-s`
MYDATE=`date+%d/%m/%y`
while:
do
clear
cat<
<
MAYDAY
-------------------------------------------------------------------------------------------------------
$USERHost:
$THIS_HOSTDate:
$MYDATE
A:
创建子目录并测试
B:
文件查找
C:
文件权限测试及统计
D:
文件创建与复制
E:
文件内容修改
Q:
----------------------------------------------------------------------------------------------------
MAYDAY
echo-n"
你的选择[A,B,C,D,E,Q]:
"
readCHOICE
case$CHOICEin
A|a)
mkdir1463
chmodu+wxr1463
chmodg+xr1463
chmodo+x1463
ls
;
;
B|b)
find/dev-namesd*>
dev1463
v=$(catdev1463)
echo$v
file-b$v
echo'
SHELL变量和函数'
set
C|c)
echo"
请输入文件的绝对路径"
readfpath
[-r$fpath]
if[$?
-eq0]
then
echo"
可读"
else
不可读"
fi
[-w$fpath]
可写"
else
不可写"
[-x$fpath]
可执行"
不可执行"
D|d)
ls-l/dev|sort>
file1
ls-l/dev|tail-n3|sort>
file2
commfile1file2>
file3
cpfile11463|cpfile21463|:
>
COMMENDSUCCEED!
E|e)
catfile1|tr-d"
-"
|tr"
"
newf1
-eq0];
catnewf1
Q|q)
exit0
*)echo"
输入无效"
esac
请输入任意建继续:
readDUMMY
done
⑵文件pc.txt中保存了部分学生某门课程的成绩,试编写一段shell程序对以下成绩计算后重新输出到文件cj.txt。
要求:
新文件内容要求用制表符(Tab键)做域分隔符;
总评成绩由“卷面*80%+平时*20%”得出,保留两位小数;
将你本人的信息插入到第三条(姓名用学号的后四位,后面的成绩均为100);
统计卷面成绩的及格率。
pc.txt文件内容如下(各域之间用“,”分割):
学号卷面平时
stu1,2017000001,31,75
stu2,2017000002,55,68
stu3,2017000003,90,99
stu4,2017000004,76,83
stu5,2017000005,52,60
stu6,2017000006,71,77
cj.txt文件内容如下:
学号卷面平时总评
stu12017000001317539.80
stu22017000002556857.60
xxxx201701xxxx100100100.00
stu32017000003909991.80
stu42017000004768377.40
stu52017000005526053.60
stu62017000006717772.20
卷面成绩的及格率:
57.14%
IFS='
'
n=0
m=0
cj.txt
echo-e"
\t学号\t\t卷面\t平时\t总评"
whilereadnamenumgradepgrade
letn++
if[$n-eq1]
then
continue
fi
if[$n-eq4]
then
echo-e"
1463\t2017011463\t100\t100\t100"
if[$grade-ge60]
letm++
$name\t$num\t$grade\t$pgrade\t`echo"
scale=2;
$grade*80/100+$pgrade*20/100"
|bc`"
done<
pc.txt
echo-e-n"
卷面成绩的及格率:
letm++
echo"
$m$n"
|awk'
{printf("
%.2f%%\n"
$1/$2*100)}'
五、实验总结
1、总结实验中遇到的问题及解决方法。
2、写出实验心得与收获。
.通过这次实验认识和理解SHELL程序的运行方式、bash程序的调试方法,大概掌握了编写SHELL程序的步骤、方法和技巧,特别是if等循环判断语句的使用方法,也更加熟练的使用一些操作命令语句。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 shell 脚本 程序设计