linux课程设计(学生版).doc_第1页
linux课程设计(学生版).doc_第2页
linux课程设计(学生版).doc_第3页
linux课程设计(学生版).doc_第4页
linux课程设计(学生版).doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux操作系统基础课程设计参考文档Linux操作系统基础课程设计I第 1章 Shell 脚本编程11-1Shell 命令行书写规则11-2 编写/修改权限及执行 Shell 程序的步骤11-3 在 Shell 程序中使用的参数31-4 在 Shell 程序中的使用变量51-5 表达式的比较81-6 循环结构语句151-7 条件结构语句191-8 在 Shell 脚本中使用函数211-9 在 Shell 脚本中调用其他脚本22Linux操作系统基础课程设计1、(必做)使用虚拟机VMware安装linux系统(1)把一个10G的硬盘进行合理分区,其中有有安装系统的区域,有存放数据的区域,并创建合理的交换分区文件。(2)加载第2块硬盘(8G),该硬盘分为3个分区,1个主分区(2G)和2个逻辑分区(分别为3G)。(3)新建目录/mnt/ljp1,/mnt/ljp2,把第2块硬盘的逻辑分区1和逻辑分区2分别挂载到/mnt/ljp1和/mnt/ljp2(要求系统启动后可以自动挂载分区)。2、(必做)在根目录下有四个文件 m1.txt,m2.txt,m3.txt,m4.txt,用 Shell 编程,实现自动 创建 m1,m2,m3,m4 四个目录,并将 m1.txt,m2.txt,m3.txt,m4.txt 四个文件分别拷贝到各自相应的目录下。3、(必做)编写一个 Shell 程序,用户输入1个数字,实现如下功能:(1)计算从1到用户输入数字的和。(1+2+3+n)(2)计算从1到用户输入数字的所有奇数数字的和。(1+3+5)4、(必做)编写一个 Shell 程序,实现如下功能:(1). 当运行一个程序的时候,这个程序会让使用者选择 Y 或 N ;(2)如果使用者输入 Y 或 y 时,就显示 OK, continue (3)如果使用者输入 n 或 N 时,就显示 Oh, interrupt !(4)如果不是 Y/y/N/n 之内的其他字节,就显示 I dont know what your choice is (利用中括号、 & 与 | 来实现)5、(必做)某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:(1)在下午 4 :50 删除/abc 目录下的全部子目录和全部文件;(2)从早 8:00下午 6:00 每小时读取/xyz 目录下 x1 文件中每行第一个域的全部数据加入 到/backup 目录下的 bak01.txt 文件内;(3)每逢星期一下午 5:50 将/data 目 录 下 的所 有 目 录 和 文 件 归档 并 压 缩 为 文 件 :backup.tar.gz;(4)在下午 5:55 将 IDE 接口的 CD-ROM 卸载(假设:CD-ROM 的设备名为 hdc);(5)在早晨 8:00 前开机后启动。(注:使用计划任务cron来实现)6、(选做)使用者输入一个文档名,做出以下判断:(1). 这个文件是否存在,若不存在则给予一个“Filename does not exist”的信息,并中断程序;(2). 若这个文件存在,则判断他是个文件或目录,结果输出“Filename is regular file”或“Filename is directory”;(3). 判断一下,运行者的身份对这个文件或目录所拥有的权限,并输出权限数据!(注意利用 test 与 & 还有 | 等标志!)7、(选做)撰写一支程序,他的作用是:1.) 先查看一下 /root/test/logical 这个名称是否存在;2.) 若不存在,则创建一个文件,使用 touch 来创建,创建完成后离开; 3.) 如果存在的话,判断该名称是否为文件,若为文件则将之删除后创建一个目录,档名为 logical ,之后离开; 4.) 如果存在的话,而且该名称为目录,则移除此目录!8、(选做)(任选其一)(1)编写一个 Shell 程序,键盘输入两个数及+、-、*、与/中的任一运算符,计算这两个数的运算 结果。(2)编写 4 个函数分别进行算术运算+、-、*、/,并编写一个菜单,实现运算命令。9、(选做)编写一个 Shell 程序,呈现一个菜单,有 0-5 共 6 个命令选项,1 为挂载 U 盘,2 为 卸载 U 盘,3 为显示 U 盘的信息,4 把硬盘中的文件拷贝到 U 盘,5 把 U 盘中的文件拷贝到硬盘 中,选 0 为退出。程序分析:把此程序分成题目中要求的 6 大功能模块,另外加一个菜单显示及选择的主模板。第 1章 Shell 脚本编程l Shell 命令行的运行l 编写、修改权限和执行 Shell 程序的步骤l 在 Shell 程序中使用参数和变量l 表达式比较、循环结构语句和条件结构语句l 在 Shell 程序中使用函数和调用其他 Shell 程序1-1Shell 命令行书写规则u Shell 命令行的书写规则对 Shell 命令行基本功能的理解有助于编写更好的 Shell 程序,在执行 Shell 命令时多个命 令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如:rootlocalhost root# ls a* -l;free;df长 Shell 命令行可以使用反斜线字符()在命令行上扩充,例如:rootlocalhost root# echo “this is long command”This is long command注意:“”符号是自动产生的,而不是输入的。1-2 编写/修改权限及执行 Shell 程序的步骤u 编写 Shell 程序u 执行 Shell 程序Shell 程序有很多类似 C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。 Shell 程序是指放在一个文件中的一系列 Linux 命令和实用程序。在执行的时候,通过 Linux 操 作系统一个接一个地解释和执行每条命令。首先,来编写第一个 Shell 程序,从中学习 Shell 程序的编写、修改权限、执行过程。1-2-1 编辑 Shell 程序编辑一个内容如下的源程序,保存文件名为 date,可将其存放在目录/bin 下。rootlocalhost bin#vi date#! /bin/shecho “Mr.$USER,Today is:”echo &date “+%B%d%A”echo “Wish you a lucky day !”注意:#! /bin/sh 通知采用 Bash 解释。如果在 echo 语句中执行 Shell 命令 date,则需要在 date命令前加符号“&”,其中%B%d%A 为输入格式控制符。1-2-2 建立可执行程序编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。rootlocalhost bin#chmod +x date1-2-3 执行 Shell 程序执行 Shell 程序有下面三种方法: 方法一:rootlocalhost bin#./ dateMr.root,Today is:二月 06 星期二Wish you a lucky day !方法二:另一种执行 date 的方法就是把它作为一个参数传递给 Shell 命令:rootlocalhost bin# Bash dateMr.root,Today is:二月 06 星期二Wish you a lucky day !方法三:为了在任何目录都可以编译和执行 Shell 所编写的程序,即把/bin 的这个目录添加到整个 环境变量中。具体操作如下: rootlocalhost bin#. dateMr.root,Today is:二月 06 星期二Wish you a lucky day !实例 1-1:编写一个 Shell 程序 mkf,此程序的功能是:显示 root 下的文件信息,然后建立一个 kk 的文件夹,在此文件夹下建立一个文件 aa,修改此文件的权限为可执行。 分析:此 Shell 程序中需要依次执行下列命令为:进入 root 目录:cd /root显示 root 目录下的文件信息:ls l新建文件夹 kk: mkdir kk进入 root/kk 目录:cd kk新建一个文件 aa: vi aa #编辑完成后需手工保存 修改 aa 文件的权限为可执行:chmod +x aa回到 root 目录:cd /root因此该 Shell 程序只是以上命令的顺序集合,假定程序名为 mkfrootlocalhost root#vi mkf cd /rootls l mkdir kk cd kkvi aachmod +x aa cd /root1-3 在 Shell 程序中使用的参数u 位置参数u 内部参数如同 ls 命令可以接受目录等作为它的参数一样,在 Shell 编程时同样可以使用参数。Shell程序中的参数分为位置参数和内部参数等。1-3-1 位置参数由系统提供的参数称为位置参数。位置参数的值可以用$N 得到,N 是一个数字,如果为 1, 即$1。类似 C 语言中的数组,Linux 会把输入的命令字符串分段并给每段进行标号,标号从 0 开 始。第 0 号为程序名字,从 1 开始就表示传递给程序的参数。如$0 表示程序的名字,$1 表示传 递给程序的第一个参数,以此类推。1-3-2 内部参数上述过程中的$0 是一个内部变量,它是必须的,而$1 则可有可无,最常用的内部变量有$0、$#、$?、$*,它们的含义如下。l $0:命令含命令所在的路径。l $1: 传递给程序的第1个参数。l $2: 传递给程序的第2个参数。(以此类推)l $#:传递给程序的总的参数数目。l $?:Shell 程序在 Shell 中退出的情况,正常退出返回 0,反之为非 0 值。l $*:传递给程序的所有参数组成的字符串。l $:当前进程的进程号。实例 1-2:编写一个 Shell 程序,用于描述 Shell 程序中的位置参数为:$0、$#、$?、$*,程序名为 test1,代码如下:rootlocalhost bin#vi test1#! /bin/shecho “Program name is $0”;echo “There are totally $# parameters passed to this program ”;echo “The last is $?”;echo “The parameter are $*”;执行后的结果如下:rootlocalhost bin# test1 this is a test program /传递 5 个参数Program name is /bin/test1 /给出程序的完整路径和名字There are totally 5 parameters passed to this program / 参数的总数The last is 0 /程序执行效果The parameters are this is a test program / 返回由参数组成的字符串注意:命令不计算在参数内。实例 1-3:利用内部变量和位置参数编写一个名为 test2 的简单删除程序,如删除的文件名为 a,则在终端中输入的命令为:test a分析:除命令外至少还有一个位置参数,即$#不能为 0,删除不能为$1,程序设计过程如下。(1) 用 vi 编辑程序rootlocalhost bin#vi test2#! /bin/shif test $# -eq 0 thenecho “Please specify a file!”elsegzip $1 /现对文件进行压缩mv $1.gz $HOME/dustbin /移动到回收站echo “File $1 is deleted !”fi(2) 设置权限rootlocalhost bin#chmod +x test2 (3) 运行rootlocalhost bin# test2 a (如果 a 文件在 bin 目录下存在) File a is deleted!1-4 在 Shell 程序中的使用变量u 变量的赋值u 变量的访问u 变量的输入1-4-1 变量的赋值在 Shell 编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明。要赋值给 一个变量,其格式如下:变量名=值注意:等号(=)前后没有空格 例如:x=6a=”How are you ”表示把 6 赋值给变量 x,字符串“How are you ”赋值给变量 a。1-4-2 访问变量值如果要访问变量值,可以在变量前面加一个美元符号“$”,例如:rootlocalhost bin#a=”How are you ”rootlocalhost bin#echo “He just said:$a” He just said:How are you 一个变量给另一个变量赋值可以写成:变量 2=$变量 1例如:x=$ii+可以写成:i=$i+11-4-3 键盘读入变量值在 Shell 程序设计中,变量的值可以作为字符串从键盘读入,其格式为:read 变量 例如:rootlocalhost bin#read strread 为读入命令,它表示从键盘读入字符串到 str。实例 1-4:编写一个 Shell 程序 test3,程序执行时从键盘读入一个目录名,然后 显示这个目录下所有文件的信息。分析:存放目录的变量为 DIRECTORY,其读入语句为:read DIRECTORY显示文件的信息命令为:ls arootlocalhost bin#vi test3#! /bin/shecho “please input name of directory”read DIRECTORY cd $DIRECTORY ls l (2)设置权限rootlocalhost bin#chmod +x test3 (3)执行rootlocalhost bin#./test3 注意:输入路径时需间隔符“/”结果。实例 1-5:运行程序 test4,从键盘读入 x、y 的值,然后做加法运算,最后输出(1)用 vi 编辑程序rootlocalhost bin#vi test4#! /bin/shecho “please input x y”read x,y z=expr $x+$yecho “The sum is $z”(2)设置权限rootlocalhost bin#chmod +x test4 (3)执行rootlocalhost bin#./ test445 78The sum is 123 注意:表达式 total=expr $total +$num及 num=expr $num +1中的符号“”为键盘左上角的“”键。1、特殊符号(1)引用符号在bash中,许多字符有特殊的含义。如果希望bash忽略某些字符的特殊含义,可以使用一种称为“引用”的技术,通知Shell暂时忽略被引用字符的特殊含义,将其作为普通字符处理。Shell在使用“引用”时用到三种字符:转义符“”、单引号“”和双引号“”l 引用符号1 转义符“”将转义符“”放在Shell特殊字符之前,则Shell忽略该字符原有的特殊含义。用这种方式时,必须在每一个欲忽略其特殊含义的特殊字符之前添加一个“”字符。l 引用符号2 单引号“”将字符串放在一对单引号之间,则单引号内的所有字符的特殊含义都被忽略,而只作为普通字符解释。例1:下面两条命令是等效的。# echo f*?# echo f*?例2:# string=$PATH# echo $string$PATH例3:# name=liuhongqis homel 引用符号3 双引号“”使用双引号的引用与单引号的类似,括在双引号内的大部分特殊字符将被看作普通字符,但也有一些特殊字符即便用双引号括起来之后仍然保留着其特殊的意义,比如$、”和。例:假定变量PATH的值为/usr/bin#string=“$PATH and $PATH”#echo $string/usr/bin and $PATH(2) 命令替换符“”命令替换符“”(反引号)的作用跟引用字符的作用相反。反引号括起来的字符串被Shell解释为命令行,在执行时,Shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。这个字符所对应的键一般位于键盘的左上角。例1:# pwd/root# string=“Current directory is pwd”# echo $stringCurrent directory is /root例2:# today=date# echo Today is $todayToday is Mon Jan 15 16:20:12 CST 20022、expr 命令 expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。格式为: expr Expression(命令读入Expression 参数,计算它的值,然后将结果写入到标准输出)参数应用规则:l 用空格隔开每个项;l 用 (反斜杠) 放在 shell 特定的字符前面;l 对包含空格和其他特殊字符的字符串要用引号括起来expr用法实例讲解 (1)整数运算# expr 14 % 95# expr 1000 + 9001900# expr 30 / 3 / 25# expr 30 * 3 (使用乘号时,必须用反斜线屏蔽其特定含义。)90# expr 30 * 3expr: Syntax error(2)计算字串长度# expr length “this is a test”14(3)增量计数说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反引号的用法为命令替代。# LOOP=0# LOOP=expr $LOOP + 11-5 表达式的比较u 字符串操作符u 逻辑运算符u 用 tes t 比较的运算符u 数字比较符u 文件操作符在 Shell 程序中,通常使用表达式比较来完成逻辑任务。表达式所代表的操作符有字符操作 符、数字操作符、逻辑操作符、以及文件操作符。其中文件操作符是一种 Shell 所独特的操作符。 因为 Shell 里的变量都是字符串,为了达到对文件进行操作的目的,于是才提供了文件操作符。1-5-1 字符串比较作用:测试字符串是否相等、长度是否为零,字符串是否为 NULL。 常用的字符串操作符如表 1-1所示.。表 1-1常用的字符串操作符字符串操作符含义及返回值=比较两个字符串是否相同,相同则为“真”!=比较两个字符串是否不相同,不同则为“真”-n比较两个字符串长度是否大于零,若大于零则为“真”-z比较两个字符串长度是否等于零,若等于零则为“真”实例 1-6:从键盘输入两个字符串,判断这两个字符串是否相等,如相等输出。【例1】 字符串比较的使用。# str1=abcd# test $str1 = abcd# echo $?【例2】 含有空格的字符串的比较。# strl=“”# test $str1# echo $?# test “$str1”# echo $?# test n “$str1”# echo $?test 命令的测试功能test是Shell程序中的一个表达式,用test命令去判断文件的存在与性质,变量的相互关系;如果条件为真,则返回一个 0 值。如果表达式不为真,则返回一个大于 0 的值, 也可以将其称为假值。检查最后所执行命令的状态的最简便方法是使用 $? 值。test 命令期望在命令行中找到一个参数,当 shell 没有为变量赋值时,则将该变量视为空。这意味着在处理脚本时,一旦脚本寻找的参数不存在,则 test 将报告该错误。test 和 命令虽然 Linux 和 UNIX 的每个版本中都包含 test 命令,但该命令有一个更常用的别名 左方括号:。test 及其别名通常都可以在 /usr/bin 或 /bin (取决于操作系统版本和供应商)中找到。当您使用左方括号而非 test 时,其后必须始终跟着一个空格、要评估的条件、一个空格和右方括号。右方括号不是任何东西的别名,而是表示所需评估参数的结束。条件两边的空格是必需的,这表示要调用 test。test 和 的语法如下:test expression测试的标志代表意义1. 关於某个档名的文件类型判断,如 test -e filename 表示存在否-e 该档名是否存在?(常用)-f 该档名是否存在且为文件(file)?(常用)-d 该档名是否存在且为目录(directory)?(常用)-b 该档名是否存在且为一个 block device 装置?-c 该档名是否存在且为一个 character device 装置?-S 该档名是否存在且为一个 Socket 文件?-p 该档名是否存在且为一个 FIFO (pipe) 文件?-L 该档名是否存在且为一个连结档?2. 关於文件的权限侦测,如 test -r filename 表示可读否 (但 root 权限常有例外)-r 侦测该档名是否存在且具有可读的权限?-w 侦测该档名是否存在且具有可写的权限?-x 侦测该档名是否存在且具有可运行的权限?-u 侦测该档名是否存在且具有SUID的属性?-g 侦测该档名是否存在且具有SGID的属性?-k 侦测该档名是否存在且具有Sticky bit的属性?-s 侦测该档名是否存在且为非空白文件?3. 两个文件之间的比较,如: test file1 -nt file2-nt (newer than)判断 file1 是否比 file2 新-ot (older than)判断 file1 是否比 file2 旧-ef 判断 file1 与 file2 是否为同一文件,可用在判断 hard link 的判定上。主要意义在判定,两个文件是否均指向同一个 inode!4. 关於两个整数之间的判定,例如 test n1 -eq n2-eq 两数值相等 (equal)-ne 两数值不等 (not equal)-gt n1 大於 n2 (greater than)-lt n1 小於 n2 (less than)-ge n1 大於等於 n2 (greater than or equal)-le n1 小於等於 n2 (less than or equal)5. 判定字串的数据test -z string 判定字串是否为 0 ?若 string 为空字串,则为 truetest -n string 判定字串是否非为 0 ?若 string 为空字串,则为 false。注: -n 亦可省略test str1 = str2 判定 str1 是否等於 str2 ,若相等,则回传 truetest str1 != str2 判定 str1 是否不等於 str2 ,若相等,则回传 false6. 多重条件判定,例如: test -r filename -a -x filename-a (and)两状况同时成立!例如 test -r file -a -x file,则 file 同时具有 r与 x 权限时,才回传 true。-o (or)两状况任何一个成立!例如 test -r file -o -x file,则 file 具有 r或 x 权限时,就可回传 true。! 反相状态,如 test ! -x file ,当 file 不具有 x 时,回传 true(1)用 vi 编辑程序rootlocalhost bin#vi test5#! /bin/Bash read ar1read ar2 “$ar1” = “$ar2” echo $? #?保存前一个命令的返回码(2)设置权限rootlocalhost bin#chmod +x test5 (3)执行rootlocalhost root#./ test5 aaabbb1 注意:”后面和”前面及等号“=“的前后都应有一个空格;注意这里是程序的退出情况,如果 ar1 和 ar2 的字符串是不想等的非正常退出,输出结果为 1。实例 1-7: 比较字符串长度是否大于零(1)用 vi 编辑程序rootlocalhost bin#vi test6#! /bin/Bash read ar -n “$ar” echo $? /保存前一个命令的返回码(2)设置权限rootlocalhost bin#chmod +x test6(3)执行rootlocalhost bin#./ test60注意:运行结果 1 表示 ar 的小于等于零,0 表示 ar 的长度大于零。1-5-2 数字比较在 Bash Shell 编程中的关系运算有别于其他编程语言,用表 1-2 中的运算符用 test 语句 表示大小的比较。表 1-2 用 test 比较的运算符运算符号 含 义-eq 相等-ge 大于等于-le 小于等于-ne 不等于-gt 大于-lt 小于实例 1-8:比较两个数字是否相等(1)用 vi 编辑程序rootlocalhost bin#vi test7#! /bin/Bash read x,yif test $x eq $y thenecho “$x=$y”elsefiecho “$x!=$y”(2)设置权限rootlocalhost bin#chmod +x test7(3)执行rootlocalhost bin#./ test750 10050!=100rootlocalhost bin#./ test7150 150150= =1501-5-3 逻辑操作在 Shell 程序设计中的逻辑运算符如表 1-3 所示。1-3 Shell 中的逻辑运算符运算符号含 义!反:与一个逻辑值相反的逻辑值-a与(and):两个逻辑值为“是”返回值为“是”,反之为“否”-o或(or): 两个逻辑值有一个为“是”,返回值就是“是”实例 1-9:分别给两个字符变量赋值,一个变量赋予一定的值,另一个变量为空,求两者的与、或操作。(1)用 vi 编辑程序rootlocalhost bin#vi test8#! /bin/Bash part1 =”1111”part2 =” ” #part2 为空 “$ part1” a “$ part2”echo $? #保存前一个命令的返回码 “$ part1” o “$ part2”echo $?(2)设置权限rootlocalhost bin#chmod +x test8(3)执行rootlocalhost bin#./ test8101-5-4 文件操作文件测试操作表达式通常是为了测试文件的信息,一般由脚本来决定文件是否应该备份、 复制或删除。由于 test 关于文件的操作符有很多,在表 1-4 中只列举一些常用的操作符。表 1-4 文件测试操作符运算符号含 义-d对象存在且为目录返回值为“是”-f对象存在且为文件返回值为“是”-L对象存在且为符号连接返回值为“是”-r对象存在且可读则返回值为“是”-s对象存在且长度非零则返回值为“是”-w对象存在且且可写则返回值为“是”-x对象存在且且可执行则返回值为“是”实例 1-10:判断 zb 目录是否存在于/root 下。(1)用 vi 编辑程序rootlocalhost bin#vi test9#! /bin/Bash -d /root/zb echo $? #保存前一个命令的返回码(2)设置权限rootlocalhost bin#chmod +x test9 (3)执行rootlocalhost bint#./ test9(4)在/root 添加 zb 目录rootlocalhost bin#mkdir zb(5)执行rootlocalhost bin#./test90 注意:运行结果是返回参数“$?”,结果 1 表示判断的目录不存在,0 表示判断的目录不存在。实例 1-11:编写一个 Shell 程序 test10,输入一个字符串,如果是目录,则显示目录下的信息,如为文件显示文件的内容。(1)用 vi 编辑程序rootlocalhost bin#vi test10#! /bin/Bashecho “Please enter the directory name or file name”read DORFif -d $DORF thenls $DORFelif -f $DORF thencat $DORFelseecho “input error! ”fi(2)设置权限rootlocalhost bin#chmod +x test10(3)执行rootlocalhost bin#./ test101-6 循环结构语句u Shell 的循环语句Shell 常见的循环语句有 for 循环、while 循环语句和 until 循环。1-6-1 for 循环语法:for 变量 in 列表do操作done注意:变量要在循环内部用来指列表当中的对象。列表是在 for 循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件 名。两行输出。实例 1-12:在列表中的值:a,b,c,e,I,2,4,6,8 用循环的方式把字符与数字分成(1)用 vi 编辑脚本程序 test11 rootlocalhost bin#vi test11#! /bin/Bashfor i in a,b,c,e,I 2,4,6,8 doecho $i done(2)设置权限rootlocalhost bin#chmod +x test11(3)执行rootlocalhost bin#./ test11 a,b,c,e,i2,4,6,8 注意:在循环列表中的空格可表示换行。实例 1-13:删除垃圾箱中的所有文件。分析:在本机中,垃圾箱的位置是在$HOME/.Trash 中,因而是在删除$HOME/.Trash 列表当 中的所有文件,程序脚本如下。(1)用 vi编辑脚本程序 test12 rootlocalhost bin#vi test12#! /bin/Bashfor i in $HOME/.Trash/*dorm $iecho “$i has been deleted!”done(2)设置权限rootlocalhost bin#chmod +x test12(3)执行rootlocalhost bin#./ test12/root/.Trash/abc has been deleted!/root/.Trash/abc1 has been deleted!实例 1-14:求从 1100 的和。(1)用 vi 编辑脚本程序 test13 rootlocalhost bin#vi test13#! /bin/Bash total =0 for(j=1;j=100;j+); dototal=expr $total + $jdoneecho “The result is $total”(2)设置权限rootlocalhost bin#chmod +x test13(3)执行rootlocalhost bin#./ test13The result is 5050注意:for 语句中的双括号不能省,最后的分号可有可无,表达式 total=expr $total + $j的加 号两边的空格不能省,否则会成为字符串的连接。1-6-2 while 循环语法:while 表达式do操作done只要表达式为真,do 和 done 之间的操作就一直会进行。实例 1-15:用 while 循环求 1100 的和。(1)用 vi 编辑脚本程序 test14 rootlocalhost bin#vi test13 total =0num=0 while(num=100);dodonetotal=expr $total +$ numnum=expr $num + 1echo “The result is $total”(2)设置权限rootlocalhost bin#chmod +x test14 (3)执行rootlocalhost bin#./ test14The result is 50501-6-3 until 循环语法:until 表达式do 操作 done重复 do 和 done 之间的操作直到表达式成立为止。实例 1-16:用 until 循环求 1100 的和。(1)用 vi 编辑脚本程序 test15 rootlocalhost bin#vi test15 total =0num=0until $num gt 100dodonetotal=expor $total +$ numnum=expr $num + 1echo “The result is $total”(2)设置权限rootlocalhost bin#chmod +x test15 (3)执行rootlocalhost bin#./ test15The result is 50501-7 条件结构语句u Shell 的条件结构语句Shell 程序中的条件语句主要有 if 语句与 case 语句。1-7-1 if 语句语法:if 表达式 1 then操作elif 表达式 2 then操作elif 表达式 3 then操作 else 操作 fiLinux 里的 if 的结束标志是将 if 反过来写成 fi;而 elif 其实是 else if 的缩写。其中,elif 理论上可以有无限多个。实例 1-17:判断1-10之间的数,如果是奇数就打印出来。(1)用 vi 编辑脚本程序 test16 rootlocalhost bin#vi test16 for(j=0;j=10;j+)dofi doneif($j%2=1)thenecho “$j”(2)设置权限rootlocalhost bin#chmod +x test16(3)执行rootlocalhost bin#./ test16135791-7-2 case 语句语法: case 表达式 in 值 1|值 2) 操作;值 3|值 4) 操作;值 5|值 6) 操作;*)操作;esaccas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论