实验3:Shell程序设计

更新时间:2023-11-05 02:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告3

课程名称: Linux驱动程序开发 实验名称: Shell程序设计 学生姓名: 班级: 学号: 指导老师: 钱振江 成绩:

一、实验目的

1.Shell程序设计中变量的使用;

2.理解通道的概念并初步掌握它的使用方法;

3.掌握算术操作、字符串操作、逻辑操作、文件操作;

4.掌握if then fi、if then elif fi、case、while、for等控制语句; 5.在shell脚本中使用函数;

二、实验任务与要求

1.通过对shell程序的调试,理解变量$#,$0,$1,$2,$3,$@的含义; 2.Shell顺序程序设计;

3.Shell分支程序与多分支程序设计; 4.Shell循环程序设计。

三、实验工具与准备

计算机PC机,Linux Ubuntu操作系统 预备知识

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循环

1

? 语法: until 表达式 do 操作 Done 6.if语句

? 语法:

if 表达式1 then 操作

elif 表达式2 then 操作

elif 表达式3 then 操作 … 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” shift 3

2

echo “程序名:$0” echo “所有参数: $@”

echo “前三个参数:$1 $2 $3” exit 0

修改程序,使用变量$#,程序运行时从键盘输入文件名,判断目录或者文件是否存在,如果存在,显示文件内容。提示:

read DORF if [ -d $DORF ] then

ls $DORF elif [ -f $DORF] ......

2.编写一个shell程序,此程序的功能:显示root用户目录下的文件信息,然后建立一个kk的文件夹,在此文件夹下新建一个文件aa,修改此文件的权限为可执行。 提示:

1. 进入root目录:cd /root

2. 显示root目录下的文件信息:ls –l 3. 新建文件夹kk:mkdir kk 4. 进入root/kk目录:cd kk

5. 新建一个文件aa:vi aa #编辑完成后需手工保存 6. 修改aa文件的权限为可执行:chmod +x aa 7. 回到root目录:cd /root

在此基础上修改程序,所建立的目录名从键盘输入,把/root下的所有文件信息保存在aa文件中。

3.调试下列shell程序,此程序的功能是:利用内部变量和位置参数编写一个名为test2的简单删除程序,如删除的文件名为a,则在终端输入的命令为“test a”。

提示:除命令外至少还有一个位置参数,即$#不能为0,删除的文件为$1。 (1) 用vi编辑程序

[root@localhost bin]#vi test2

#!/bin/sh if test $# -eq 0 then

echo \ else

gzip $1 #先对文件进行压缩

mv $1.gz $HOME/dustbin #移动到回收站 echo \fi

3

(2) 请修改程序,查看回收站中的文件,从键盘输入回收站中的某一文件,把此文件恢复到/home目录下。

(3) 删除垃圾箱中的所有文件。

4.调试下列程序并记录实验结果,程序的主要思想是用while循环求1到100的和。 (1) 用gedit编辑脚本程序test12

[root@localhost bin]#gedit test12 total=0 num=0

while((num<=100));do

total=`expr $total + $num ((num+=1)) done

echo \(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 \ you selected directory\

echo \ to you selected directory\ echo \ a new file\

echo \ you selected file\ echo \ you selected file\ echo \ Menu\ read input

if test $input = 6 then exit 0 fi do

case $input in 1) ls;;

2) echo -n \ target directory:\ read dir cd $dir ;;

3) echo -n \ a file name:\ read file touch $file ;;

4) echo -n \ a file name:\ read file vi $file ;;

5) echo -n \ a file name:\ read file rm $file ;;

4

*) echo \ selected 1\\2\\3\\4\\5\\6 \ esac done

(2)修改以上程序,用菜单形式完成算术四则混合运算。 (3)修改以上程序,用菜单形式调用5个应用程序。

5

本文来源:https://www.bwwdw.com/article/k2a2.html

Top