20.16/20.17 shell中的函数
20.18 shell中的数组
20.19 告警系统需求分析
20.16/20.17 shell中的函数
函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。定义函数必须要放在最前面。定义好的函数相当于是命令。
语法格式
1 | function f_name() { |
而可以把function给省略1
2
3f_name() {
command
}
打印相应的参数
1 | [root@kun05 shell]# vim fun1.sh |
1 | [root@kun05 shell]# sh fun1.sh |
也可以让参数再放到命令行里输入1
2
3
4
5
6
7
8
9#!/bin/bash
function inp(){
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The third parameter is $3"
echo "The script name is $0"
echo "The number of parameter is $#"
}
inp $1 $2 $3
1 | [root@kun05 shell]# sh fun1.sh 1 adf kun |
定义加法函数
1 | [root@kun05 shell]# vim fun2.sh |
1 | [root@kun05 shell]# sh fun2.sh |
输入网卡名字 打印出相应的IP地址
1 | [root@kun05 shell]# vim fun3.sh |
1 | [root@kun05 shell]# sh fun3.sh |
规范用户输入信息 并打出对应的IP地址 https://github.com/aminglinux/shell/blob/master/if_ip.txt
20.18 shell中的数组
数组其实就是变量,只不过变量里面是多个数字或者字符串。
数组其实就是变量,只不过变量里面是多个数字或者字符串。
语法格式
a=(元素1 元素2 元素3)
1
[root@kun05 shell]# a=(1 2 3 4)
调用数组
${a[@]}或者${a[*]}
1
2
3
4
5[root@kun05 shell]# a=(1 2 3 4)
[root@kun05 shell]# echo ${a[@]}
1 2 3 4
[root@kun05 shell]# echo ${a[*]}
1 2 3 4查看对应下标的元素值 默认从0开始
${a[下标]}
1
2
3[root@kun05 shell]# a=(1 2 3 4)
[root@kun05 shell]# echo ${a[0]}
1获取元素的个数
1
2
3[root@kun05 shell]# a=(1 2 3 4)
[root@kun05 shell]# echo ${#a[@]}
4添加/更新元素
a[下标]=值
1
2
3[root@kun05 shell]# a[0]=100
[root@kun05 shell]# echo ${a[@]}
100 2 3 4删除元素
unset a[下标]
1
2
3[root@kun05 shell]# unset a[0]
[root@kun05 shell]# echo ${a[@]}
2 3 4数组分片
${a[@]:下标:截取个数]
1
2
3
4
5
6
7
8
9[root@kun05 shell]# b=(`seq 1 10`)
[root@kun05 shell]# echo ${b[@]}
1 2 3 4 5 6 7 8 9 10
#从第六个元素起截取3个
[root@kun05 shell]# echo ${b[@]:5:3}
6 7 8
#从倒数第九个元素起截取2个
[root@kun05 shell]# echo ${b[@]:0-9:2}
2 3数组替换
${a[@]/用来的值/替换后的值}
1
2[root@kun05 shell]# echo ${b[@]/3/100}
1 2 100 4 5 6 7 8 9 10
20.19 告警系统需求分析
需求
:使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。
- 思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。
主程序
:作为整个脚本的入口,是整个系统的命脉。配置文件
:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。子程序
:这个才是真正的监控脚本,用来监控各个指标。邮件引擎
:是由一个python程序来实现,它可以定义发邮件的服务器、发邮件人以及发件人密码输出日志
:整个监控系统要有日志输出
要求:我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致
的,不同的地方在于根据不同的角色
,定制不同的配置文件
。
程序架构:
bin
目录下是主程序conf
目录下是配置文件shares
目录下是各个监控脚本mail
目录下是邮件引擎log
目录下是日志。