shell腳本-4

1、shell 中的函數python

一、函數的概念:函數就是把一段代碼整理到一個小單元中,並給這個小單元命名,當用到這段代碼時直接調用小單元的名字便可。shell

二、格式:function f_name() {數組

                          commandbash

                            }服務器

函數必須放在最前面函數

三、案例工具

#!/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 3blog

這個腳本也能夠寫成這樣ip

#!/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

四、案例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

五、案例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

2、shell中的數組

一、數組:一串字符或一組數字或數字與字符組成的集合

二、定義一個數組並顯示

[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

三、顯示數組中的某一個數或字符,下標是從0開始的,0就是第一個數字

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

四、獲取數組的個數

[root@localhost ~]# echo ${#a[*]}
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

六、數組元素的刪除和數組的刪除

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

七、數組分片

[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

八、數組替換

[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

3、告警需求分析

一、需求:使用shell定製各類個性化警告工具,須要統一化,規範化管理。

二、思路:指定一個腳本包,包含主程序,子程序,配置文件,郵件引擎,輸出日誌等。

三、主程序:做爲整個腳本的入口,是整個系統的命脈。

四、配置文件:是一個控制中心,用它來開關各個子程序,指定各個相關連的日誌文件。

五、子程序:真正的監控腳本,用來監控各個指標

六、郵件引擎:由一個python程序實現,定義發郵件的服務器,發件人及發件密碼

七、輸出日誌:整個監控系統要有日誌輸出

bin: 主程序

conf:配置文件

shares:監控腳本

mail:郵件引擎

log:日誌

相關文章
相關標籤/搜索