孟启贤实验三shell脚本程序设计.docx
- 文档编号:1928157
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:11
- 大小:945.21KB
孟启贤实验三shell脚本程序设计.docx
《孟启贤实验三shell脚本程序设计.docx》由会员分享,可在线阅读,更多相关《孟启贤实验三shell脚本程序设计.docx(11页珍藏版)》请在冰豆网上搜索。
孟启贤实验三shell脚本程序设计
2017011463-孟启贤-实验三-shell脚本程序设计(总11页)
实验报告
课程名称Linux系统实践
实验项目LINUXSHELL脚本程序设计
实验仪器PC
系别计算机学院
专业网络工程
班级/学号网1702/63
学生姓名孟启贤
实验日期
成绩
指导教师李艳平
实验三LINUXSHELL脚本程序设计
一、实验目的:
通过本实验练习,使学生了解常用SHELL的编程特点,掌握SHELL程序设计的基础知识。
对SHELL程序流程控制、SHELL程序的运行方式、bash程序的调试方法及bash的常用内部命令有进一步的认识和理解。
通过本实验,学生应能够基本掌握编写SHELL程序的步骤、方法和技巧。
二、实验环境
操作系统:
任何Unix/Linux或windows系列
应用系统:
SHELL或windows环境下的cygwin模拟系统
三、实验要求
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< ------------------------------------------------------------------------------------------------------- USER: $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 echo"不可读" fi [-w$fpath] if[$-eq0] then echo"可写" else echo"不可写" fi [-x$fpath] if[$-eq0] then echo"可执行" else echo"不可执行" fi ;; D|d) ls-l/dev|sort>file1 ls-l/dev|tail-n3|sort>file2 commfile1file2>file3 cpfile11463|cpfile21463|: >file2 echo"COMMENDSUCCEED! " ;; E|e) catfile1|tr-d"-"|tr">""@">newf1 if[$-eq0];then catnewf1 fi ;; Q|q) exit0 ;; *)echo"输入无效" esac echo-n"请输入任意建继续: " readDUMMY done ⑵文件中保存了部分学生某门课程的成绩,试编写一段shell程序对以下成绩计算后重新输出到文件。 要求: 新文件内容要求用制表符(Tab键)做域分隔符;总评成绩由“卷面*80%+平时*20%”得出,保留两位小数;将你本人的信息插入到第三条(姓名用学号的后四位,后面的成绩均为100);统计卷面成绩的及格率。 文件内容如下(各域之间用“,”分割): 姓名学号卷面平时 stu1,01,31,75 stu2,02,55,68 stu3,03,90,99 stu4,04,76,83 stu5,05,52,60 stu6,06,71,77 文件内容如下: 姓名学号卷面平时总评 stu1013175 stu2025568 xxxx201701xxxx100100 stu3039099 stu4047683 stu5055260 stu6067177 卷面成绩的及格率: % 源代码如下: #! /bin/bash IFS=',' n=0 m=0 > echo-e"姓名\t学号\t\t卷面\t平时\t总评">> whilereadnamenumgradepgrade do letn++ if[$n-eq1] then continue fi if[$n-eq4] then echo-e"1463\t63\t100\t100\t100">> fi if[$grade-ge60] then letm++ fi echo-e"$name\t$num\t$grade\t$pgrade\t`echo"scale=2;$grade*80/100+$pgrade*20/100"|bc`">> done< 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 脚本 程序设计