一、shell 中的函数

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

2、格式:function f_name() {

                          command

                            }

函数必须放在最前面

3、案例

#!/bin/bash 
function inp(){
echo $1 $2 $3 $0 $#                                       #$1 ,$2,$3 分别代表 a b c,$0代表脚本自己,$#代表有几个参数
}
inp a b c

[root@localhost ~]# sh func.sh         
a b c func.sh 3

这个脚本也可以写成这样

#!/bin/bash
function inp(){
echo "the first par is $1"
echo "the second par is $2"
echo "the third par is $3"
echo "the scritp name is $0"
echo "the number of par is $#"
}
inp $1 $2 $3

[root@localhost ~]# sh func.sh 1                #只显示已输入的参数,没显示不输出。
the first par is 1
the second par is
the third par is
the scritp name is func.sh
the number of par is 1

4、案例2   调用sum函数计算1+10的和

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

[root@localhost ~]# sh -x func1.sh
+ sum 1 10
+ s=11
+ echo 11
11

5、案例3  获取IP


#!/bin/bash
ip()
{
ifconfig |grep -A1 "$1: " |awk '/inet/ {print $2}'            #获取网卡的IP
}
read -p "please input the eth name: " eth
ip $eth

[root@localhost ~]# sh -x func2.sh
+ read -p 'please input the eth name: ' eth
please input the eth name: ens33
+ ip ens33
+ ifconfig
+ grep -A1 'ens33: '
+ awk '/inet/ {print $2}'
192.168.134.130
[root@localhost ~]# sh -x func2.sh
+ read -p 'please input the eth name: ' eth
please input the eth name: ens37
+ ip ens37
+ ifconfig
+ grep -A1 'ens37: '
+ awk '/inet/ {print $2}'
192.168.150.131

二、shell中的数组

1、数组:一串字符或一组数字或数字与字符组成的集合

2、定义一个数组并显示

[root@localhost ~]# a=(1 2 3 4 a)
[root@localhost ~]# echo ${a[@]}
1 2 3 4 a
[root@localhost ~]# echo ${a[*]}
1 2 3 4 a

3、显示数组中的某一个数或字符,下标是从0开始的,0就是第一个数字

[root@localhost ~]# echo ${a[0]}
1
[root@localhost ~]# echo ${a[2]}
3
[root@localhost ~]# echo ${a[3]}
4

4、获取数组的个数

[root@localhost ~]# echo ${#a[*]}
5

5、数组赋值和替换

[root@localhost ~]# a[6]=h
[root@localhost ~]# echo ${a[*]}
1 2 3 4 a h
[root@localhost ~]# a[3]=k                   #注意这个地方下标是从0开始
[root@localhost ~]# echo ${a[*]}
1 2 3 k a h

6、数组元素的删除和数组的删除

[root@localhost ~]# unset a[2]
[root@localhost ~]# echo ${a[*]}
1 2 k a h
[root@localhost ~]# unset a
[root@localhost ~]# echo ${a[*]}

7、数组分片

[root@localhost ~]# echo ${a[*]}                  #定义数组a
1 2 3 4 5 6 7 8 9 10

[root@localhost ~]# echo ${a[@]:0:3}         #从第一个元素开始,截取3个
1 2 3

 

[root@localhost ~]# echo ${a[@]:1:4}         #从第二个元素开始,截取4个
2 3 4 5

[root@localhost ~]# echo ${a[@]:0-3:2}      #从倒数第三个元素开始,截取2个
8 9

8、数组替换

[root@localhost ~]# a=(${a[@]/8/h})
[root@localhost ~]# echo ${a[*]}
1 2 3 4 5 6 7 h 9 10
[root@localhost ~]# echo ${a[@]/6/a}
1 2 3 4 5 a 7 h 9 10

三、告警需求分析

1、需求:使用shell定制各种个性化警告工具,需要统一化,规范化管理。

2、思路:指定一个脚本包,包含主程序,子程序,配置文件,邮件引擎,输出日志等。

3、主程序:作为整个脚本的入口,是整个系统的命脉。

4、配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关连的日志文件。

5、子程序:真正的监控脚本,用来监控各个指标

6、邮件引擎:由一个python程序实现,定义发邮件的服务器,发件人及发件密码

7、输出日志:整个监控系统要有日志输出

bin: 主程序

conf:配置文件

shares:监控脚本

mail:邮件引擎

log:日志

posted on 2018-04-20 23:39  天梭  阅读(140)  评论(0编辑  收藏  举报