配色: 字号:
《Linux操作系统》08Shell编程高级
2023-05-25 | 阅:  转:  |  分享 
  
Shell编程高级企业级卓越人才培养方案(信息类专业集群)学习目标熟悉数组的相关操作掌握函数的调用掌握任务的管理数组定义数组
数组是能够存储多个值的变量。数组的值可以被单独引用,也可以使用变量名来引用整个数组。如果要给某个变量设置多个值,可以把值放在括号内
。其格式如下所示。注意:值与值之间需要用空格分隔。为变量设置多个值,如示例代码CORE0801所示。数组数组操作(1)数组赋值为数
组指定下标赋值,如果指定的下标已经超过当前数组的大小,新赋的值被追加到数组的尾部。如果被赋值的下标已经存在,那么在该下标的新值会代
替原来的值。为数组赋值的格式如下所示。(2)调用数组元素 在调用数组某个元素时,必须用代表该元素在数组位置的下标值
来调用。下标值要用方括号括起来。当要显示整个数组的值,可用“”作为通配符放在下标的位置。调用数组元素格式如下所示。数组数组操作(
3)删除数组 用unset命令删除数组中的某个值,其格式如下所示。(4)获取数组长度 可使用如
下所示格式获取数组长度。(5)分片访问 分片访问指的是访问从指定下标开始到指定下标结束的值。其格式如下所示。数组数
组操作 (6)模式替换 模式替换其格式是指把数组中的旧值替换为新值,其格式如下所示。(7)遍历数组
使用循环遍历数组,如代码所示。函数函数简介 Shell脚本可以作为一种编程语言来使用,大部分的
编程语言都有函数,Shell也不例外。但是,由于Shell是一个解释器,所以它不能对程序进行编译,而是在从磁盘加载程序时对程序进行
解释,而程序的加载和解释都是非常耗时的。为了解决这个问题,许多Shell都包含了函数,Shell把这些函数放在内存中,这样每次执行
函数时就不必再从磁盘读入。Shell以一种内部格式来存放这些函数,这样就不必耗费大量的时间来解释函数。虽然,在Shell中函数并非
是必须的编程元素,但是通过使用函数,可以更好的组织程序。将一些相对独立的代码变成函数,可以提高程序的可读性和重用性。避免重复编写大
量相同的代码。函数函数简介 Linux Shell可以定义的函数在Shell脚本中可以实时调用。Shell中函数的定义格式如
下两种。格式一如下所示。格式二如下所示。函数无参函数(1)无返回值的函数 无返回值的函数,如代码所示。
函数无参函数(2)有返回值的函数 有返回值的函数有return语句,且函数返回值小于255。定义一个函数实现先
后输入的两个数相加的功能,如代码所示。函数有参函数 有参函数是指在调用函数时向函数传递参数。在函数体内部,通过“$n”的形式
来获取参数的值(当n>=10时,需要使用“${n}”来获取参数),其中n表示第几个参数,例如,$1表示第一个参数,$2表示第二个参
数...可以用如表所示的字符组合处理传入的参数。函数函数与数组(1)向函数传数组参数 在向脚本函数传递
数组变量时,将数组变量当作单个参数传递的话,它不会起作用。如代码所示。函数函数库使用函数可以在脚本中省去一些输入工作,但当遇到要在
多个脚本中使用同一段代码时,为了使用一次而在每个脚本中都定义同样的函数太过麻烦。在Bash Shell中可以把某些常用的功能,独立
存放在一些独立的文件中,这些文件就称为“函数库”。Shell脚本缺乏第三方函数库,所以在很多时候需要系统管理人员根据实际工作的需要
自行开发。函数递归函数由于局部变量自成体系,所以除了从脚本命令行处获得的变量外,自成体系的函数不需要使用任何外部资源,这个特性使得
函数可以递归地调用。函数调用自己从而得到结果,称为递归函数。通常递归函数都有一个最终可以迭代到的值。正则表达式正则表达式简介
正则表达式是用某种模式去匹配由一串字符和元字符构成的字符串的公式。如果数据匹配正则表达式的公式,它就会被接受并进一步处理
;如果数据不匹配模式,它就会被滤掉。其过程如图所示。正则表达式符号的含义 正则表达式模式利用通配符来描述数据流中的一
个或多个字符。Linux中有很多场景都可以使用通配符来描述不确定的数据,如表所示。正则表达式应用场景(1)目录文件计数一个Shel
l脚本会对PATH环境变量中定义的目录里的可执行文件进行计数。(2)解析邮件地址如今,电子邮件地址已经成为一种重要的通信方式。由于
邮件地址的形式众多,验证邮件地址成为脚本程序员的一个不小的挑战。自动化自动化简介 Linux系统的Web网站在运营状态时,常
需要对网站进行维护,例如查看资源剩余并做出响应、日志分割、数据整理、在特定状态执行特定任务等等,这些都会需要Linux能实现自动执
行某些任任务。实现Linux自动化有如下所示好处。节省人力,一个脚本即可完成原来需要多次输入的命令。在夜晚自动执行可以避开网站流量
高峰期,不影响网站白天的效率。准确,设置完善的情况下,不会出差错。不需要频繁的输入某些命令,才能执行所需功能。自动化任务管理(1)
at实现定时任务 at命令能实现一个简单的定时任务程序,它只能进行一次性的定时任务,其格式如下。常用的选项如表所
示自动化任务管理(2)crontab实现定时任务cron是一个linux下的定时执行工具,可以在无需人为干预的情况下定时地执行任务
,它由crond进程和一组表(crontab文件)组成。crond进程是linux下用来周期性的执行某种任务或等待处理某些事件的一
个守护进程(守护进程是一种后台进程)。crontab文件定义了每小时、每天、每周、每月的任务。每个用户都有一个以用户名命名的cro
ntab文件,存放在/var/spool/cron/crontabs目录里,但在一个较大的系统中,系统管理员一般只会在整个系统保留
一个这样的文件。管理员可以通过编辑/etc/下面的cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的cr
ontab文件。用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段
是时间设定段,第六段是要执行的命令段,格式如下所示自动化任务管理每个字段所代表的含义如表所示。Linux日志系统Linux日志系统
(1)连接时间日志连接时间日志由多个程序执行,把记录写入到/var/og/wtmp和/var/run/utmp中。Login等程序
更新wtmp和utmp文件,使系统管理员能够跟踪对应用户在何时登录到系统。(2)进程统计日志进程统计日志由系统内核执行。当一个进程
终止时,为每个进程向统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。(3)错误日
志错误日志由sysogd(8)执行。各种系统守护进程、用户程序和内核通过sysog(3)向文件/var/og/messages报告
值得注意的事件。另外还有许多UNIX类程序创建日志,像HTTP和FTP这样提供网络服务的服务器也有详细的日志。Linux日志系统Linux日志系统Linux中常见的日志文件如表所示LOGO本项目通过对日志的处理介绍了Shell编程高级,重点介绍了Shell脚本的数组与函数,熟练掌握数组与函数的应用,将Shell命令与脚本结合起来,实现脚本自动化管理系统。
献花(0)
+1
(本文系大高老师首藏)