函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字便可。python
格式: shell
function f_name() { command }
注意:函数必需要放在最前面!function能够省略直接写函数名。数组
一、示列:打印shell的参数,函数input()bash
#!/bin/bash input() { echo $1 $2 $# $0 } input 1 a b
$1 表示第一个参数,$0表示文件名 $#表示参数的个数
编辑脚本:
执行结果服务器
inp后面也能够跟变量名:
执行结果:
二、示例:用来定义加法的函数sum()架构
#!/bin/bash sum() { s=$[$1+$2] echo $s } sum 1 2
三、示例:显示网卡的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"
所谓数组,就是一串数字或一串字符串它造成的变量,咱们把这个变量叫作数组。
颇有用,但使用数组并很少。ide
一、定义数组
格式:
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
一、需求:使用shell定制各类个性化告警工具,但须要统一化管理、规范化管理。
二、思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。
三、主程序:做为整个脚本的入口,是整个系统的命脉。
四、配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。
子程序:这个才是真正的监控脚本,用来监控各个指标。
邮件引擎:是由一个python程序来实现,它能够定义发邮件的服务器、发邮件人以及发件人密码
输出日志:整个监控系统要有日志输出
shell中的函数,shell中的数组,告警系统需求分析
要求:咱们的机器角色多种多样,可是全部机器上都要部署一样的监控系统,也就说全部机器无论什么角色,整个程序框架都是一致的,不一样的地方在于根据不一样的角色,定制不一样的配置文件。
程序架构: