函数及脚本的综合应用

简介:

函数及脚本的综合应用


1shell函数:shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。


函数由两部分组成:函数标题、函数体。


标题是函数名。函数体是函数内的命令集合。


标题名应该唯一;如果不是,将会混淆结果,因为脚本在查看调用脚本前将首先搜索函数调用相应的shell


2定义函数的格式为:

函数名(){

命令1

...

}

如果愿意,可在函数名前加上关键字function,这取决于使用者。

function函数名()

{

命令1

 ...

}


3、举例:


例1:删除文件中的空行

这个脚本(脚本名为del.lines)可以处理一个或多个文件。每个文件在用sed删除空行之前要先核实是否存在。

sed的输出被导入一个文件名中含有$ $的临时文件,最后这个临时文件又被移回到原来的文件中。

该脚本使用shift命令取得所有的文件名,用while循环逐个处理所有的文件,直至处理完

为止。可以使用del.lines --help获得一个简短的帮助

082521194.jpg082531780.jpg


保存后给脚本文件增加执行权限:chmod +x del.lines

执行脚本进行测试:

082604679.jpg


注:

1、basename命令能够从路径中分离出文件名。通常用于shell脚本中

2、shift语句用于迁移位置变量,将 $1~$9 依次向左传递

例如,若当前脚本程序获得的位置变量如下:

$1=file1、$2=file2、$3=file3、$4=file4

则执行一次shift命令后,各位置变量为:

$1=file2、$2=file3、$3=file4

再次执行shift命令后,各位置变量为:

$1=file3、$2=file4


例2:如果某些日志文件超过了特定的长度(如8K),那么它的内容将被倒换到另一个文件中,并清除原有文件中的内容.


系统中的有些日志文件增长十分迅速,每天手工检查这些日志文件的长度并倒换这些日志文件(通常是给文件名加个时间戳)是非常乏味的。可以编写一个脚本来自动完成这项工作。该脚本将提交给cron进程来运行,如果某个日志文件超过了特定的长度,那么它的内容将被倒换到另一个文件中,并清除原有文件中的内容。


该脚本中日志文件的长度限制是由变量BLOCK_LIMIT设定的。这一数字代表了块数目,在本例中是8(块大小默认为4K)。可以按照自己的需求把这一数字设得更高。所有要检查的日志文件名都保存在变量LOGS中。


这里使用了一个for循环来依次检查每一个日志文件,使用du命令来获取日志文件长度。


如果相应的文件长度大于BLOCK_LIMIT变量所规定的值,那么该文件将被拷贝到一个文件


名含有时间戳的文件中,原先的文件长度将被截断为0

082613603.jpg


注:du 并不是显示文件的实际大小,而是显示文件所占用的 block 大小,默认linux系统分区的 block size 4k,也就是说即使文件只有1个字节,也会占用4k.
ls -l则是文件的实际大小。


本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/1224802,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
编译器 C语言 C++
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)-1
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)-1
|
2月前
|
编译器 Linux C++
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(下)
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(下)
|
2月前
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)-2
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)-2
|
5月前
|
缓存 算法 Python
【python实操】如何改善你的程序,让你的程序更快执行?
【python实操】如何改善你的程序,让你的程序更快执行?
26 0
|
6月前
|
数据采集 监控 数据处理
Python自动化与脚本编写:提升效率与简化工作流程
Python自动化与脚本编写:提升效率与简化工作流程
|
6月前
|
存储 前端开发 数据可视化
那些被忽视的Python核心功能...(下)
那些被忽视的Python核心功能...(下)
|
6月前
|
Java 数据挖掘 程序员
那些被忽视的Python核心功能...(上)
那些被忽视的Python核心功能...
|
7月前
|
编解码 前端开发 JavaScript
脚本 | 大麦网脚本优化
基于上次的脚本,做出了一些优化。
150 0
|
8月前
|
自然语言处理 算法
第4章 MATLAB编程基础——4.5 脚本与函数(2)
第4章 MATLAB编程基础——4.5 脚本与函数(2)
|
8月前
|
自然语言处理
第4章 MATLAB编程基础——4.5 脚本与函数(1)
第4章 MATLAB编程基础——4.5 脚本与函数(1)