实验3Shell程序设计.docx
《实验3Shell程序设计.docx》由会员分享,可在线阅读,更多相关《实验3Shell程序设计.docx(7页珍藏版)》请在冰豆网上搜索。
实验3Shell程序设计
实验报告3
课程名称:
Linux驱动程序开发实验名称:
Shell程序设计
学生姓名:
班级:
学号:
指导老师:
钱振江成绩:
一、实验目的
1.Shell程序设计中变量的使用;
2.理解通道的概念并初步掌握它的使用方法;
3.掌握算术操作、字符串操作、逻辑操作、文件操作;
4.掌握ifthenfi、iftheneliffi、case、while、for等控制语句;
5.在shell脚本中使用函数;
二、实验任务与要求
1.通过对shell程序的调试,理解变量$#,$0,$1,$2,$3,$@的含义;
2.Shell顺序程序设计;
3.Shell分支程序与多分支程序设计;
4.Shell循环程序设计。
三、实验工具与准备
计算机PC机,LinuxUbuntu操作系统
预备知识
1.环境变量:
$HOME;$PATH;$PS1;$1~$9;$*;$@;$#;$$;$?
;$!
等。
$0是一个内部变量,它是必须的,而$1则可有可无,最常用的内部变量有$0、$#、$?
、$*,它们的含义如下:
❑$0:
命令所在的路径
❑$#:
传递给程序的总的参数数目
❑$?
:
shell程序在shell中退出的情况,正常退出返回0,反之为非0值
❑$*:
传递给程序的所有参数组成的字符串
2.字符串比较有=、!
=、-n、-z;算术运算有-eq、-ge、-le、-ne、-gt、-=lt;逻辑运算有!
、-a、-o;文件测试-d、-f、-x等;
3.for循环
❑语法:
for变量in列表
do
操作
done
4.while循环
❑语法:
while表达式
do
操作
done
5.until循环
❑语法:
until表达式
do
操作
Done
6.if语句
❑语法:
if表达式1then
操作
elif表达式2then
操作
elif表达式3then
操作
…
else
操作
fi
7.case语句
❑语法:
case字符串in
值1|值2)
操作;;
值3|值4)
操作;;
值5|值6)
操作;;
*)
操作;;
esac
case的作用就是当字符串与某个值相同是就执行那个值后面的操作。
如果同一个操作对于多个值,则使用"|"将各个值分开。
在case的每一个操作的最后面都有两个";;",分号是必须的。
四、实验步骤与操作指导
1.调试下列shell程序,写出变量$#,$0,$1,$2,$3,$@的含义。
#!
/bin/bash
echo“程序名:
$0”
echo“所有参数:
$@”
echo“前三个参数:
$1$2$3”
shift
echo“程序名:
$0”
echo“所有参数:
$@”
echo“前三个参数:
$1$2$3”
shift3
echo“程序名:
$0”
echo“所有参数:
$@”
echo“前三个参数:
$1$2$3”
exit0
修改程序,使用变量$#,程序运行时从键盘输入文件名,判断目录或者文件是否存在,如果存在,显示文件内容。
提示:
readDORF
if[-d$DORF]
then
ls$DORF
elif[-f$DORF]
......
2.编写一个shell程序,此程序的功能:
显示root用户目录下的文件信息,然后建立一个kk的文件夹,在此文件夹下新建一个文件aa,修改此文件的权限为可执行。
提示:
1.进入root目录:
cd/root
2.显示root目录下的文件信息:
ls–l
3.新建文件夹kk:
mkdirkk
4.进入root/kk目录:
cdkk
5.新建一个文件aa:
viaa#编辑完成后需手工保存
6.修改aa文件的权限为可执行:
chmod+xaa
7.回到root目录:
cd/root
在此基础上修改程序,所建立的目录名从键盘输入,把/root下的所有文件信息保存在aa文件中。
3.调试下列shell程序,此程序的功能是:
利用内部变量和位置参数编写一个名为test2的简单删除程序,如删除的文件名为a,则在终端输入的命令为“testa”。
提示:
除命令外至少还有一个位置参数,即$#不能为0,删除的文件为$1。
(1)用vi编辑程序
[root@localhostbin]#vitest2
#!
/bin/sh
iftest$#-eq0
then
echo"Pleasespecifyafile!
"
else
gzip$1#先对文件进行压缩
mv$1.gz$HOME/dustbin#移动到回收站
echo"File$1isdeleted!
"
fi
(2)请修改程序,查看回收站中的文件,从键盘输入回收站中的某一文件,把此文件恢复到/home目录下。
(3)删除垃圾箱中的所有文件。
4.调试下列程序并记录实验结果,程序的主要思想是用while循环求1到100的和。
(1)用gedit编辑脚本程序test12
[root@localhostbin]#gedittest12
total=0
num=0
while((num<=100));do
total=`expr$total+$num
((num+=1))
done
echo"Theresultis$total"
(2)用for语句完成以上求和。
(3)编写shell程序计算1+1/2+1/3+1/4+…+1/n
5.调试下列程序并记录实验结果,功能是使用shell编写一个菜单,分别实现列出以下内容:
(1)目录内容、
(2)切换目录、(3)创建文件、(4)编辑文件、(5)删除文件的功能。
在此例中将用到循环语句until、分支语句case、输入输出语句read和echo。
#!
/bin/bash
until
echo"
(1)Listyouselecteddirectory"
echo"
(2)Changetoyouselecteddirectory"
echo"(3)Creatanewfile"
echo"(4)Edityouselectedfile"
echo"(5)Removeyouselectedfile"
echo"(6)ExitMenu"
readinput
iftest$input=6then
exit0
fi
do
case$inputin
1)ls;;
2)echo-n"Entertargetdirectory:
"
readdir
cd$dir
;;
3)echo-n"Enterafilename:
"
readfile
touch$file
;;
4)echo-n"Enterafilename:
"
readfile
vi$file
;;
5)echo-n"Enterafilename:
"
readfile
rm$file
;;
*)echo"Pleaseselected1\2\3\4\5\6";;
esac
done
(2)修改以上程序,用菜单形式完成算术四则混合运算。
(3)修改以上程序,用菜单形式调用5个应用程序。
五、实验结果记录
六、实验结果分析