一、shell中的函数

函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。

格式:

function f_name() {
              command
}

注意:函数必须要放在最前面!function可以省略直接写函数名。

1、示列:打印shell的参数,函数input()

#!/bin/bash
input() {
    echo $1 $2 $# $0
}

input 1 a b

$1 表示第一个参数,$0表示文件名 $#表示参数的个数 编辑脚本: 执行结果

inp后面也可以跟变量名: 执行结果: 2、示例:用来定义加法的函数sum()

#!/bin/bash
sum() {
    s=$[$1+$2]
    echo $s
}
sum 1 2

3、示例:显示网卡的IP地址

#!/bin/bash
ip() {
    ifconfig |grep -A1 "$1 " |tail -1 |awk '{print $2}'|awk -F':' '{print $2}'
}
read -p "Please input the eth name: " e
myip=`ip $e`
echo "$e address is $myip"

shell中的数组

所谓数组,就是一串数字或一串字符串它形成的变量,我们把这个变量叫做数组。 很有用,但使用数组并不多。

1、定义数组 格式: a=(1 2 3 4 5); echo ${a[@]} 这里的数字也能写为字符串 echo ${#a[@]} 获取数组的元素个数 echo ${a[2]} 读取第三个元素,数组从0开始 echo ${a[*]} 等同于 ${a[@]} 显示整个数组 数组赋值 a[1]=100; echo ${a[@]} a[5]=2; echo ${a[@]} 如果下标不存在则会自动添加一个元素 数组的删除 uset a; unset a[1] 例如: 定义数组 b=(一串数字或者字符串); 显示结果 echo ${b[]} [root@a shell]# b=(1 2 3) [root@a shell]# echo ${b[]} 1 2 3

我们也可以查看某一个元素的值 例如: 我们要查看某一个元素的值 echo ${a[2]} [root@a shell]# echo ${b[2]} 3 这里有个特殊性,数组从0开始,也就是0是第一个元素。

我们也可以显示元素的个数 echo ${#b[]} 获取数组的元素个数,#表示元素个数。 例如: [root@a shell]# echo ${#b[]} 3

数组赋值 我们也可以针对数组的其中一个元素进行赋值。 [root@a shell]# b[3]=a [root@a shell]# echo ${b[]} 1 2 3 a 这里面我们新增加了一个元素a,在打印的时候直接就排在的后面,这是因为下标不存在则会自动添加一个元素 也可以进行替换 [root@a shell]# b[0]=aaa [root@a shell]# echo ${b[]} aaa 2 3 a

我们也可以将数组的值删除,用unset这个命令 [root@a shell]# echo ${b[]} aaa 2 3 a [root@a shell]# unset b[3] [root@a shell]# echo ${b[]} aaa 2 3

数组分片 有时候我们要截取数组中的一部分 [root@a shell]# echo ${a[*]} 1 2 3 4 5 6 7 8 9 10 例如 我们要截取从4到7

4 5 6 7 从后面开始截取

8 9 这里我们需要注意的是,从后面截取的话必须要写0-,否则不会成功。

数组的替换 [root@a shell]# echo ${a[]/8/6} 1 2 3 4 5 6 7 6 9 10 我们也可以直接赋值 [root@la shell]# echo ${a[]/3/100} 1 2 100 4 5 6 7 8 9 10 [root@a shell]# echo ${a[*]/100/3} 1 2 3 4 5 6 7 8 9 10

三、告警系统需求分析

1、需求:使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。 2、思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。 3、主程序:作为整个脚本的入口,是整个系统的命脉。 4、配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。 子程序:这个才是真正的监控脚本,用来监控各个指标。 邮件引擎:是由一个python程序来实现,它可以定义发邮件的服务器、发邮件人以及发件人密码 输出日志:整个监控系统要有日志输出 shell中的函数,shell中的数组,告警系统需求分析 要求:我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件。 程序架构: