1、实验三shell脚本程序设计实 验 报 告课程名称 Linux系统实践 实验项目 LINUX SHELL脚本程序设计 实验仪器 PC 系 别 计算机学院 专 业 网络工程 班级/学号 网1702/* 学生姓名 孟启贤 实验日期 4.15 成 绩 指导教师 李艳平 实验三 LINUX SHELL脚本程序设计一、实验目的:通过本实验练习,使学生了解常用SHELL的编程特点,掌握SHELL程序设计的基础知识。对SHELL程序流程控制、SHELL程序的运行方式、bash程序的调试方法及bash的常用内部命令有进一步的认识和理解。通过本实验,学生应能够基本掌握编写SHELL程序的步骤、方法和技巧。二、实
2、验环境 操作系统:任何Unix/Linux或 windows 系列应用系统:SHELL 或 windows环境下的cygwin模拟系统三、实验要求1、做好实验预习,通过查找资料、阅读系统提供的帮助文件等多种渠道了解本实验所使用的SHELL命令及各种技术方法。充分利用所学知识,预设多种实现思路。2、写出实验报告,内容是:简要说明实验的目的、任务与设备。写出实验步骤、实现的技术手段及关键代码。在给定实验数据的基础上给出相应的输出结果。总结实验中遇到的问题及解决方法。写出实验心得与收获。四、实验内容本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL程序的设计方法和技术。内容如下:
3、创建以下菜单程序: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命令的 帮助手
4、册中空行的个数。 D:用长格式(ls -l)显示目录/dev中所有符号链接文件,将输出结果排序后写入文件file1,将输出结果的后3行排序后写入file2文件;使用comm命令将两个文件的共有行写入文件file3。将file1、file2两文件拷入上面新创建的子目录中,最后将文件file2截断为大小为0的空文件。File1有内容。File2为空,本来有三行。如下: E:将file1文件中的字符“-”删除,再将字符“”用“”替换,修改后写入新文件newf1。判断上述操作成功后显示新文件newf1的内容。源代码如下:#!/bin/bash#menuUSER=whoamiTHIS_HOST=host
5、name -sMYDATE=date +%d/%m/%ywhile :doclearcat dev1463 v=$(cat dev1463) echo $v file -b $v echo SHELL变量和函数 set ; C|c) echo 请输入文件的绝对路径 read fpath -r $fpath if $? -eq 0 then echo 可读 else echo 不可读 fi -w $fpath if $? -eq 0 then echo 可写 else echo 不可写 fi -x $fpath if $? -eq 0 then echo 可执行 else echo 不可执行 f
6、i ; D|d) ls -l /dev|sort file1 ls -l /dev|tail -n 3|sort file2 comm file1 file2 file3 cp file1 1463|cp file2 1463|:file2 echo COMMEND SUCCEED! ; E|e) cat file1|tr -d -|tr newf1 if $? -eq 0 ; then cat newf1 fi ; Q|q) exit 0 ; *)echo 输入无效esacecho -n 请输入任意建继续:read DUMMYdone文件pc.txt中保存了部分学生某门课程的成绩,试编写一段
7、shell程序对以下成绩计算后重新输出到文件cj.txt。 要求: 新文件内容要求用制表符(Tab键)做域分隔符;总评成绩由“卷面*80% + 平时*20%”得出,保留两位小数;将你本人的信息插入到第三条(姓名用学号的后四位,后面的成绩均为100);统计卷面成绩的及格率。pc.txt文件内容如下(各域之间用“,”分割): 学号 卷面 平时stu1,2017000001,31,75stu2,2017000002,55,68stu3,2017000003,90,99stu4,2017000004,76,83stu5,2017000005,52,60stu6,2017000006,71,77 cj.
8、txt文件内容如下: 学号 卷面 平时 总评stu1 2017000001 31 75 39.80stu2 2017000002 55 68 57.60xxxx 201701xxxx 100 100 100.00stu3 2017000003 90 99 91.80stu4 2017000004 76 83 77.40stu5 2017000005 52 60 53.60stu6 2017000006 71 77 72.20 卷面成绩的及格率:57.14%源代码如下:#!/bin/bashIFS=,n=0m=0cj.txtecho -e t学号tt卷面t平时t总评cj.txtwhile rea
9、d name num grade pgradedolet n+if $n -eq 1 then continuefiif $n -eq 4 then echo -e 1463t2017011463t100t100t100cj.txtfiif $grade -ge 60 then let m+fi echo -e $namet$numt$gradet$pgradetecho scale=2;$grade * 80 / 100 + $pgrade * 20 / 100|bccj.txtdone cj.txtlet m+echo $m $n|awk printf(%.2f%n,$1/$2*100)cj.txt五、实验总结1、总结实验中遇到的问题及解决方法。2、写出实验心得与收获。.通过这次实验认识和理解SHELL程序的运行方式、bash程序的调试方法,大概掌握了编写SHELL程序的步骤、方法和技巧,特别是if等循环判断语句的使用方法,也更加熟练的使用一些操作命令语句。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1