实验三-shell脚本程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称Linux系统实践
实验项目LINUX SHELL脚本程序设计实验仪器PC
系别计算机学院
专业网络工程
班级/学号网1702/**********
学生姓名孟启贤
实验日期 4.15
成绩
指导教师李艳平
实验三LINUX SHELL脚本程序设计
一、实验目的:
通过本实验练习,使学生了解常用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 << MAYDAY
-------------------------------------------------------------------------------------------------------
USER:$USER Host:$THIS_HOST Date:$MYDATE
-------------------------------------------------------------------------------------------------------
A:创建子目录并测试
B:文件查找
C:文件权限测试及统计
D:文件创建与复制
E:文件内容修改
Q: 退出系统
----------------------------------------------------------------------------------------------------
MAYDAY
echo -n "你的选择[A,B,C,D,E,Q]:"
read CHOICE
case $CHOICE in
A|a)
mkdir 1463
chmod u+wxr 1463
chmod g+xr 1463
chmod o+x 1463
ls
;;
find /dev -name sd* >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 "可写"