脚本的作用
这个脚本的作用就是从一个文件里读取一个需要管理的所有log文件,并且读入一个数组。然后判断是否存在,如果不存在则忽略。如果存在将判断大小是否超过设定大小,如果超过则备份。
脚本内容
#!/bin/bash
##author:ginge
echo "logfiles to manage:"
logfiles=${1-./logfiles}
size=${2-100}
index=0;
#read the log file into the array
while read logfiles[$index]
do
echo "$index: ${logfiles[${index}]}"
(( index +=1 ))
done < $logfiles
i=0;
while [ $i -lt $index ]
do
logfile=${logfiles[$i]}
(( i += 1 ))
dir=${logfile%/*}
if [ -z $logfile ] || [ ! -f $logfile ];then
echo "$logfile doesn't exist. ignored."
continue;
fi
echo "handling logfile: $logfile"
echo "entering dir:$dir"
cd $dir
result="`find $logfile -size +${size}M`"
if [ ! -z $result ]; then
echo "backup $logfile..."
cp $logfile $logfile".`date '+%G%m%d'`"
: > $logfile
else
echo "it's not bigger than ${size} M"
fi
done
Shell类型声明
开头这里声明了使用bash
注释
SHELL的注释以#开头,可以从一行的任意位置开始
命令参数读取
注意到$1和$2没有?这代表第一和第二个命令参数。其它的有$0,$#和 $*。$0代表当前shell,$#代表参数个数,$*则代表所有参数
变量声明
脚本语言可以事先不变量,变量也是弱类型的,最近一次使用时是什么类型就是什么类型,变量区分大小写。
logfiles=${1-./logfiles}意思是如果存在第一个命令参数则使用它对logfiles赋值,如果不存在则赋值为./logfiles
变量引用
变量引用以$符号开始,严格点要使用${variable}形式
循环
支持for循环和while循环,也支持continue和break
条件判断
在shell里,通常使用test或者[]来作条件判断,可以判断的类型很多,如大小,文件是否存在,是否目录等等。
数组
新版Bash支持一维数组。数组元素的声明是array_name[xx]。你可以只初始化一部分数组元素,也可以全部初始化。也就是说可以
Array[0] =1
Array[1] =1
Array[2] =1
Array[3] =1
Array[10]=1
文件读取
使用一个<符就行了
变量计算
这里我们使用了(())语法,当然也可以使用let语法。
字符串操作
%{logfile%/*}表示最短截取,如果变量logfile当前的值为/vision/logs/app/app.log,那么截取后的值将是/vision/logs/app
执行命令
`` 这个`是跟~同一个键的那个符号,假如这样一个语句
Result=`date`
执行后echo $Result将是这样的Tue Jan 6 15:13:41 CST 2009
没有使用一些Shell命令有
l IO重定向
l Here Document
l 管道
l 进程
l 命令执行结果
l 函数
l 嵌套shell
l 等等
需要详细了解上述命令读以下资料就已经足够了
参考资料:
l Advanced Bash-Scripting Guide version 3.7.3
l Shell十三问
分享到:
相关推荐
毫无疑问,UNIX/Linux 最重要的软件之一就是shell,目前最流行的shell 被称为Bash(Bourne AgainShell),几乎所有的Linux 和绝大部分的UNIX 都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX 工作...
Bash shell编程参考手册,Linux编程必备。
1. Shell脚本的第一行中的符号“#!”用来指定解释执行该脚本文件的Shell程序。如果脚 本文件中缺少该行,在执行过程中,会报出错误信息。 2. Shell脚本完成后保存为*.sh,而后增加其可执行权限:chmod +x *.sh。 3. ...
因此,在文档中,鄙人以介绍Shell语法为重点,必要之处,附以命令、语法的使用说明,所谓“寓情于景、寓理于事”,可以加深对知识点的理解和掌握。同时,文档对一些容易让人迷糊的通配符、正则表达式的使用也进行了...
这本使用大量的例子详细地介绍了Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用...
Shell脚本经典案例,sh脚本语法参考,封装参考,SH脚本文件案例,BASH脚本文件参考,Linux脚本文件参考,sh脚本文件写法参考,SH脚本写法规范学习,bash脚本linux脚本规范学习,命令行管理工具封装,服务管理叫版本...
使用此脚本集合在短短的时间内学习Bash Shell脚本,这些脚本是真实的示例,从简单的基于日期的主题到独立的信息亭类型用户输入表单。 学习基于“观察和理解策略”,这意味着您运行这些脚本,观察它们的输出,理解...
这本书介绍了bash大量的细节和广阔的范围,使用大量的例子详细地介绍了 Bash的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash的所有特性,在书中还有许多练习可以引导你思考,以得到更深入的...
本书理论结合实践,全面、系统地介绍了Linux Shell(Bash)脚本编程的语法、命令、技巧等内容。本书偏重于实践教学,在讲解理论知识时,通过一些典型实例让读者了解理论知识在实际环境中的应用,并对易混淆和较难...
了Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能肯定...
bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again Shell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。 bash是大多数Linux系统以及Mac OS X默认的shell,它...
Bash shell脚本的高级开发指南。详细介绍了Bash shell脚本语法、常用命令、开发技巧。其中有非常多的实例,并经过众多高手的修正,是一本学习Bash脚本不得不看的好书!
了 Bash 的语法,各种技巧,调试等等的技术,以循序渐进的学习方式,让你了解 Bash 的所有特性, 在书中还有许多练习可以引导你思考,以得到更深入的知识。无论你是新手还是老手,或是使用其他 语言的程序员,我能...
1.编写Shell脚本文件,该文件的功能:从键盘输入年月,然后自动显示该年份下该月的日历,然后再显示系统当前的日期和时间。要求用3种不同方式执行该脚本。(3分) 参考程序: $vi mycal(进入vi环境输入下列脚本程序...
1.shell介绍 通常所说的shell就是shell脚本,它是一门脚本语言,弱类型 2.shell规范 第一行内容为#!/bin/bash #注释 是以.sh结尾的文件 3.shell语法
毫无疑问,UNIX/Linux 最重要的软件之一就是shell,目前最流行的shell 被称为Bash(Bourne Again Shell),几乎所有的Linux 和绝大部分的UNIX 都可以使用Bash。作为系统与用户之间的交互接口,shell 几乎是你在UNIX ...
毫无疑问,UNIX/Linux 最重要的软件之一就是shell,目前最流行的shell 被称为Bash(Bourne Again Shell),几乎所有的Linux 和绝大部分的UNIX 都可以使用Bash。作为系统与用户之间的交互接口,shell 几乎是你在UNIX ...
高级Bash脚本编程指南 一本深入学习shell脚本艺术的书籍 这本书假定你没有任何关于脚本或一般程序的编程知识, 但是如果你具备相关的知识, 那么你将很容易就能够达到中高级的水平. . . 所有这些只是UNIX®浩瀚知识的...