ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:70.66KB ,
资源ID:12633187      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12633187.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Shell脚本编程吐血共享.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Shell脚本编程吐血共享.docx

1、Shell脚本编程吐血共享第12章 脚本编程 命令行的运行 编写、修改权限和执行程序的步骤 在程序中使用参数和变量 表达式比较、循环结构语句和条件结构语句 在程序中使用函数和调用其他程序12-1 命令行书写规则 命令行的书写规则对命令行基本功能的理解有助于编写更好的程序,在执行命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: # a* 长命令行可以使用反斜线字符()在命令行上扩充,例如: # “ ” 注意:“”符号是自动产生的,而不是输入的。 12-2 编写/修改权限及执行程序的步骤 编写程序 执行程序程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言

2、那样复杂。程序是指放在一个文件中的一系列命令和实用程序。在执行的时候,通过操作系统一个接一个地解释和执行每条命令。首先,来编写第一个程序,从中学习程序的编写、修改权限、执行过程。12-2-1 编辑程序编辑一个内容如下的源程序,保存文件名为,可将其存放在目录下。 #! “.$ :” “” “ a !”注意:#! 通知采用解释。如果在语句中执行命令,则需要在命令前加符号“&”,其中为输入格式控制符。12-2-2 建立可执行程序 编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。 12-2-3 执行程序执行程序有下面三种方法:方法一: :二月 06 星期二 a !方法二:

3、另一种执行的方法就是把它作为一个参数传递给命令: # :二月 06 星期二 a !方法三: 为了在任何目录都可以编译和执行所编写的程序,即把的这个目录添加到整个环境变量中。具体操作如下: :$ # :二月 06 星期二 a !实例 12-1:编写一个程序,此程序的功能是:显示下的文件信息,然后建立一个的文件夹,在此文件夹下建立一个文件,修改此文件的权限为可执行。分析:此程序中需要依次执行下列命令为:进入目录: 显示目录下的文件信息: l新建文件夹: 进入目录: 新建一个文件: #编辑完成后需手工保存修改文件的权限为可执行: 回到目录: 因此该程序只是以上命令的顺序集合,假定程序名为 l 12-

4、3 在程序中使用的参数 位置参数 内部参数如同命令可以接受目录等作为它的参数一样,在编程时同样可以使用参数。程序中的参数分为位置参数和内部参数等。12-3-1 位置参数由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1。类似C语言中的数组,会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。12-3-2 内部参数上述过程中的$0是一个内部变量,它是必须的,而$1则可有可无,最常用的内部变量有$0、$#、$?、$*,它们的含义如下。 $0:命

5、令含命令所在的路径。 $#:传递给程序的总的参数数目。 $程序在中退出的情况,正常退出返回0,反之为非0值。 $*:传递给程序的所有参数组成的字符串。实例 12-2:编写一个程序,用于描述程序中的位置参数为:$0、$#、$?、$*,程序名为1,代码如下: 1#! “ $0”; “ $# ”; “ $?”; “ $*”;执行后的结果如下: # 1 a 传递5个参数 1 给出程序的完整路径和名字 5 参数的总数 0 程序执行效果 a 返回由参数组成的字符串注意:命令不计算在参数内。实例 12-3:利用内部变量和位置参数编写一个名为2的简单删除程序,如删除的文件名为a,则在终端中输入的命令为: a分

6、析:除命令外至少还有一个位置参数,即$#不能为0,删除不能为$1,程序设计过程如下。(1) 用编辑程序 2#! $# 0 “ a !” $1 现对文件进行压缩 $1 $ 移动到回收站 “ $1 !” (2) 设置权限 2(3) 运行 # 2 a (如果a文件在目录下存在) a ! 12-4 在程序中的使用变量 变量的赋值 变量的访问 变量的输入12-4-1变量的赋值 在编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明。要赋值给一个变量,其格式如下:变量名=值注意:等号(=)前后没有空格例如: 6 ” ”表示把6赋值给变量x,字符串“ ”赋值给变量a。12-4-2 访问变量值如果要访

7、问变量值,可以在变量前面加一个美元符号“$”,例如: ” ” “ :$a” A 一个变量给另一个变量赋值可以写成:变量2=$变量1例如:$i可以写成:$112-4-3 键盘读入变量值 在程序设计中,变量的值可以作为字符串从键盘读入,其格式为: 变量例如: 为读入命令,它表示从键盘读入字符串到。实例 12-4:编写一个程序3,程序执行时从键盘读入一个目录名,然后显示这个目录下所有文件的信息。分析: 存放目录的变量为,其读入语句为: 显示文件的信息命令为: a 3#! “ ” $ l(2)设置权限 3(3)执行 3注意:输入路径时需“/”实例 12-5:运行程序4,从键盘读入x、y的值,然后做加法

8、运算,最后输出结果。(1)用编辑程序 4 #! “ x y” $y “ $z”(2)设置权限 4(3)执行 445 78 123注意:表达式 $ +$及 $ +1中的符号“”为键盘左上角的“”键。 12-5 表达式的比较 字符串操作符 逻辑运算符 用比较的运算符 数字比较符 文件操作符在程序中,通常使用表达式比较来完成逻辑任务。表达式所代表的操作符有字符操作符、数字操作符、逻辑操作符、以及文件操作符。其中文件操作符是一种所独特的操作符。因为里的变量都是字符串,为了达到对文件进行操作的目的,于是才提供了文件操作符。12-5-1 字符串比较 作用:测试字符串是否相等、长度是否为零,字符串是否为。

9、常用的字符串操作符如表12-1所示.。 表12-1 常用的字符串操作符 字符串操作符 含义及返回值=比较两个字符串是否相同,相同则为“真”!=比较两个字符串是否不相同,不同则为“真” 比较两个字符串长度是否大于零,若大于零则为“真” 比较两个字符串长度是否等于零,若等于零则为“真”实例 12-6:从键盘输入两个字符串,判断这两个字符串是否相等,如相等输出。(1)用编辑程序 5 #! 1 2 “$1” = “$2” $? #?保存前一个命令的返回码(2)设置权限 5(3)执行 51注意:”后面和”前面及等号“=“的前后都应有一个空格;注意这里是程序的退出情况,如果1和2的字符串是不想等的非正常退

10、出,输出结果为1。实例 12-7: 比较字符串长度是否大于零(1)用编辑程序 6#! “$” $? 保存前一个命令的返回码(2)设置权限 6(3)执行 60注意:运行结果1表示的小于等于零,0表示的长度大于零。12-5-2 数字比较 在 编程中的关系运算有别于其他编程语言,用表12-2中的运算符用语句表示大小的比较。 表12-2 用比较的运算符 运算符号 含 义 相等 大于等于 小于等于 不等于 大于 小于实例 12-8:比较两个数字是否相等(1)用编辑程序 7 #! $x $y “$y” “$y”(2)设置权限 7(3)执行 750 10050100 7 150 150 150= =1501

11、2-5-3 逻辑操作 在程序设计中的逻辑运算符如表12-3所示。 12-3 中的逻辑运算符运算符号 含 义 !反:与一个逻辑值相反的逻辑值 与():两个逻辑值为“是”返回值为“是”,反之为“否” 或(): 两个逻辑值有一个为“是”,返回值就是“是”实例 12-9:分别给两个字符变量赋值,一个变量赋予一定的值,另一个变量为空,求两者的与、或操作。(1)用编辑程序 8 #! 1 =”1111” 2 =” ” 2为空 “$ 1” a “$ 2” $? #保存前一个命令的返回码 “$ 1” o “$ 2” $? (2)设置权限 8(3)执行 81012-5-4 文件操作文件测试操作表达式通常是为了测试

12、文件的信息,一般由脚本来决定文件是否应该备份、复制或删除。由于关于文件的操作符有很多,在表12-4中只列举一些常用的操作符。 表12-4 文件测试操作符 运算符号 含 义对象存在且为目录返回值为“是”对象存在且为文件返回值为“是”对象存在且为符号连接返回值为“是”对象存在且可读则返回值为“是”对象存在且长度非零则返回值为“是”对象存在且且可写则返回值为“是”对象存在且且可执行则返回值为“是”实例 12-10:判断目录是否存在于下。(1)用编辑程序 9#! $? #保存前一个命令的返回码(2)设置权限 9 (3)执行 9 (4)在添加目录 (5)执行 90注意:运行结果是返回参数“$?”,结果1

13、表示判断的目录不存在,0表示判断的目录不存在。实例 12-11:编写一个程序10,输入一个字符串,如果是目录,则显示目录下的信息,如为文件显示文件的内容。(1)用编辑程序 10#! “ ” $ $ $ $ “ ! ”(2)设置权限 10(3)执行 10 12-6 循环结构语句 的循环语句常见的循环语句有循环、循环语句和循环。12-6-1 循环语法: 变量 列表 操作 注意:变量要在循环内部用来指列表当中的对象。列表是在循环的内部要操作的对象,可以是字符串也可以是文件,如果是文件则为文件名。实例 12-12:在列表中的值:,2,4,6,8用循环的方式把字符与数字分成两行输出。(1)用编辑脚本程序

14、11 11#! i 2,4,6,8 $i(2)设置权限 11 (3)执行 112,4,6,8注意:在循环列表中的空格可表示换行。实例 12-13:删除垃圾箱中的所有文件。 分析:在本机中,垃圾箱的位置是在$中,因而是在删除$列表当中的所有文件,程序脚本如下。(1)用编辑脚本程序12 12#! i $* $ i “$ i !”(2)设置权限 12(3)执行 12 !1 !实例 12-14:求从1100的和。 (1)用编辑脚本程序13 13#! =0(1=100); $ + $j “ $”(2)设置权限 13(3)执行 13 5050注意:语句中的双括号不能省,最后的分号可有可无,表达式 $ +

15、$j的加号两边的空格不能省,否则会成为字符串的连接。12-6-2 循环 语法: 表达式 操作 只要表达式为真,和之间的操作就一直会进行。实例 12-15:用循环求1100的和。 (1)用编辑脚本程序14 13 =00 (=100); $ +$ “ $”(2)设置权限 14 (3)执行 14 505012-6-3 循环 语法: 表达式操作重复和之间的操作直到表达式成立为止。实例 12-16:用循环求1100的和。 (1)用编辑脚本程序15 15 =00 $ 100 $ +$ $ + 1 “ $”(2)设置权限 15 (3)执行 15 5050 12-7 条件结构语句 的条件结构语句程序中的条件语

16、句主要有语句与语句。12-7-1 语句语法: 表达式1 操作表达式2 操作表达式3 操作操作里的的结束标志是将反过来写成;而其实是 的缩写。其中,理论上可以有无限多个。实例 12-17:用循环求1100的和。(1)用编辑脚本程序16 16(0=10) ($21) “$j”(2)设置权限 16(3)执行 161357912-7-2 语句 语法: 表达式 值1|值2)操作;值3|值4)操作;值5|值6)操作;*)操作; 的作用就是当字符串与某个值相同是就执行那个值后面的操作。如果同一个操作对于多个值,则使用“|”将各个值分开。在的每一个操作的最后面都有两个“;”分号是必需的。实例 12-18:是一

17、个多用户操作系统,编写一程序根据不同的用户登录输出不同的反馈结果。 (1)用编辑脚本程序17 17 $ ) “ !”;) “ ”; 注意这里只有一个分号 “ !”; 这里才是两个分号 ) “ !” “ !”; 将两命令写在一行,用一个分号作为分隔符*) “ ?$?”;(2)设置权限 17(3)执行 17 ! 12-8 在脚本中使用函数 的函数程序也支持函数。函数能完成一特定的功能,可以重复调用这个函数。 函数格式如下:函数名( ) 函数体 函数调用方式为函数名 参数列表实例 12-19:编写一函数求两个数的和,这两个数用位置参数传入,最后输出结果。(1)编辑代码 18()$1$2 $a + $

18、b “ $z” $1 $2(2)设置权限 18 (3)执行 18 10 20 30注意:函数定义完成后必须同时写出函数的调用,然后对此文件进行权限设定,在执行此文件。 12-9 在脚本中调用其他脚本 脚本的调用在脚本的执行过程中,脚本支持调用另一个脚本,调用的格式为: 程序名实例 12-20:在脚本19中调用20。(1)调用2019脚本 “ $0”20 “ $1”20脚本 “ $?”(2)设置权限 19 20(3)执行 19 123 19 ? 123注意:1)在编辑中命令区分大小写字符。2)在语句中加入必要的注释,以便以后查询和维护,注释以#开头。3)对变量进行数字运算时,使用乘法符号“*”时

19、,要用转义字符“”进行转义。4)由于对命令中多余的空格不进行任何处理,因此程序员可以利用这一特性调整程序缩进,达到增强程序可读性效果。5)在对函数命名时最好能使用有含义且能容易理解的名字,即使函数名能够比较准确地表达函数所完成的任务。同时建议对于较大的程序要建立函数名和变量命名对照表。 12-10本章小结本章讲解了下脚本的定义和相关脚本编写的基础,这些基础知识是学习脚本编程的关键。接着讲解了 脚本的执行方式和脚本的常见流程控制,为脚本的编程做了准备。课后习题1. 选择题(1) 下列说法中正确的是( )。 A安装软件包3.42,要按顺序使用 命令 B挂载U盘, 2312 C显示变量1的值用命令

20、1 D用命令与 执行脚本,所得的结果并不相同(2) 一个 脚本的第一行是什么( )。A. B. C. D. (3) 在脚本中,用来读取文件内各个域的内容并将其赋值给变量的命令是( )。A. B. C. D. (4) 下列变量名中有效的变量名是( )。A. -2 B. _2$3 C. 1 D. 2004(5) 下列对变量操作,正确的是( )。A. 为变量赋值:$ B. 显示变量的值:C. 显示变量的值: $ D. 判断变量是否有值: “$” (6) 在 12系统中,下列关于脚本程序说法不正确的是( )。A. 脚本程序以文本的形式存储B. 脚本程序在运行前需要进行编译C. 脚本程序由解释程序解释执

21、行D. 脚本程序主要用于系统管理和文件操作,它能够方便自如地处理大量重复性的系统工作(7) 在编程中关于$2的描述正确的是( )。A. 程序后携带了两个位置参数B. 宏替换C. 程序后面携带的第二个位置参数D 携带位置参数的个数E 用$2引用第二个位置参数(8) 在 12系统中,“”是执行脚本,在执行 1 2 3的命令的过程中,变量$1的值为( )。A. B. 1 C. 2 D. 32. 填空题(1) 在编程时,使用方括号表示测试条件的规则是 。(2) 编写的程序运行前必须赋予该脚本文件 权限。3. 简答题(1) 用编程,判断一文件是不是字符设备文件,如果是将其拷贝到 目录下。(2) 在根目录

22、下有四个文件m1,m2,m3,m4,用编程,实现自动创建m1234四个目录,并将m1234四个文件分别拷贝到各自相应的目录下。(3) 某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案: 在下午4 :50删除目录下的全部子目录和全部文件; 从早8:00下午6:00每小时读取目录下x1文件中每行第一个域的全部数据加入到目录下的01文件内; 每逢星期一下午5:50将目录下的所有目录和文件归档并压缩为文件:; 在下午5:55将接口的卸载(假设:的设备名为); 在早晨8:00前开机后启动。(4) 请用编程来实现:当输入不同的选择时,执行不同的操作,如:输入 开始启动应用程序,输入时,

23、关闭,输入时,查看进程,否则执行*)显示“!”并退出程序。(5) 编写一个程序,此程序的功能是:显示下的文件信息,然后建立一个的文件夹,在此文件夹下建立一个文件,修改此文件的权限为可执行。(6) 编写一个程序,挂载U盘,在U盘中根目录下所有文件拷贝到当前目录,然后卸载U盘。(7) 编写一个程序,程序执行时从键盘读入一个文件名,然后创建这个文件。(8) 编写一个程序,键盘输入两个字符串,比较两个字符串是否相等。(9) 编写三个程序,分别用、与求从2+4+100的和。(10) 编写一个程序,键盘输入两个数及+、-、*、与/中的任一运算符,计算这两个数的运算结果。(11) 编写两个程序及,在中输入两

24、个数,调用计算计算这两个数之间奇数的和。(12) 编写程序,可以挂载U盘,也可挂载硬盘的分区,并可对文件进行操作。(13) 编写4个函数分别进行算术运算+、-、*、/,并编写一个菜单,实现运算命令。课程实训实训内容:编写一个程序,呈现一个菜单,有0-5共6个命令选项,1为挂载U盘,2为卸载U盘,3为显示U盘的信息,4把硬盘中的文件拷贝到U盘,5把U盘中的文件拷贝到硬盘中,选0为退出。程序分析:把此程序分成题目中要求的6大功能模块,另外加一个菜单显示及选择的主模板。(1) 编辑代码 19#退出程序函数() “*” “* ! *” 0 #加载U盘函数 () #在下创建目录 #查看U盘设备名称 l

25、e “ :c” $ #卸载U盘函数() #显示U盘信息函数() #拷贝硬盘文件到U盘函数() e “ ( ):c” “ !.” $ #拷贝U盘函数到硬盘文件() “ :c” “ !.” $ . #点(.)表示当前路径 “” “* *” “ 1 ” “ 2 ” “ 3 ” “ 4 ” “ 5 ” “ 0 ” “” e “ a (0-5):c” $ 1) 2) 3) 4) 5) 1) *) “ (0-5)” 4 ; (2)修改权限 19(3)程序执行结果 19项目实践这段时间陈飞在学习下的 编程,感觉 编程和C语言很相似。王工程师今天来看陈飞,顺便问一下陈飞的学习情况。陈飞就和他说了自己对编程的看法。王工程师听了后,笑着说,“一样不一样,你编个程序不久明白了吗。”“那编什么程序呢”。陈飞问道。“就俄罗斯方块吧”,王工程师说。“俄罗斯方块大家都会玩,而且你可以在网上找到用C语言编写的程序,你用编程实现,和C语言版的对比一下,不就明白了它们之间的不同了吗”。王工程师走了,留下了陷入沉思的陈飞。他能完成吗?

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1