20.16 shell中的函數
函數就是把一段代碼整理到了一個小單元中,並給這個小單元起一個名字,當用到這段代碼時直接調用這個小單元的名字即可。
格式: function f_name() {
command
}事例1:函數必須放在最前面
#!/bin/bash function inp(){ echo "The first par $1" echo "The second par $2" echo "The third par $3" } inp 1 2
輸出結果:
The first par 1 The second par 2 The third par
事例2:運算加減
#!/bin/bash function sum (){ s=$[$1+$2] echo $S } sum 1 10
運算過程:
+ sum 1 10 + s=11 + echo 11 11
事例3 :查看ip地址
#!/bin/bash ip(){ ifconfig |grep -A1 "eth0" |awk '/inet/ {print $2}' } read -p "please input the eth name:" eth ip $eth
#ifconfig 查詢IP地址
#grep -A1 "$1" 查詢第一段
#awk '/inet/ '{print $2}' 查找inet字符列出後打印第二列(即IP地址)
#read -P 把use當成read的變量.用戶輸出
運行結果:
[root@izbp1chwdyqnsfzoolyx2yz lxy]# sh -x ip.sh + read -p 'please input the eth name: ' use please input the eth name: eth0 + ip eth0 + grep -A1 eth0 + awk '/inet/ {print $2}' + ifconfig 172.16.15.246
20.18 shell中的數組
定義數組:
b=(1 2 3)
echo ${b[@]}
echo ${b[*]}
數組賦值和查詢:
數組查詢:是從下標0開始
echo ${b[0]}
echo ${#b[@]} // 獲取數組的個數
數組賦值:
b[3]=a
echo ${b[*]}
數組刪除:
unset b[3]
截取數組和替換:
a=(`seq 1 10`)
截取從3開始 4個數
echo ${a[@]:3:4}
截圖倒數第3個數開始2個數
echo ${a[@]:0-3:2}
[root@izbp1chwdyqnsfzoolyx2yz lxy]# a=(`seq 1 10`) [root@izbp1chwdyqnsfzoolyx2yz lxy]# echo ${a[@]:3:4} 4 5 6 7 [root@izbp1chwdyqnsfzoolyx2yz lxy]# echo ${a[@]:0-3:4} 8 9 10 [root@izbp1chwdyqnsfzoolyx2yz lxy]# echo ${a[@]:0-3:2} 8 9
替換:
echo ${a[@]/3/100} //將3改成100
a=(${a[@]/8/99}) //將8改成99
20.19 告警系統需求分析
需求:使用shell定製各種個性化告警工具,但需要統一化管理、規範化管理。
思路:指定一個腳本包,包含主程序、子程序、配置文件、郵件引擎、輸出日誌等。
主程序:作爲整個腳本的入口,是整個系統的命脈。
配置文件:是一個控制中心,用它來開關各個子程序,指定各個相關聯的日誌文件。
子程序:這個纔是真正的監控腳本,用來監控各個指標。
郵件引擎:是由一個python程序來實現,它可以定義發郵件的服務器、發郵件人以及發件人密碼
輸出日誌:整個監控系統要有日誌輸出