函數就是把一段代碼整理到了一個小單元中,並給這個小單元起一個名字,當用到這段代碼時直接調用這個小單元的名字便可。python
格式:shell
格式:數組
function 函數名稱() { bash
command 服務器
}框架
#function此單詞可省略,函數定義必須在腳本前面,後面調用函數直接寫函數名便可函數
例子1:工具
#!/bin/bash #顯示參數 function inp(){ echo $1 $2 $3 $0 $# } inp $1 $2 $3
結果:spa
# sh -x 09.sh a b c + inp a b c + echo a b c 1.sh 3 a b c 1.sh 3
例子2:日誌
#!/bin/bash #求和 sum (){ s=$[$1+$2] echo $s } sum 1 2
結果:
# sh -x sum.sh + sum 1 2 + s=3 + echo 3 3
例子3:
#!/bin/bash #輸入網卡名稱,輸出對應IP地址 ip (){ ifconfig|grep -A1 "$1: " |tail -1|awk '{print $2}' } read -p "please in put network name: " eth ip $eth
數組:一串字符創或者一串數字,造成的一個變量,把這個變量叫作數組,可針對數組某些元素進行操做
定義數組:a=(1 2 3 4 b ); echo ${a[@]}
獲取數組元素的個數:echo ${#b[@]}
獲取數組第5個元素:echo ${b[4]} #數組從0開始
顯示整個數組:echo ${b[@]} 或echo ${b[*]}
數組賦值:
a[1]=100;echo ${a[@]} #顯示1 100 3 4 b
a[5]=2;echo ${a[@]} #顯示1 100 3 4 b 2 若下標在數組中沒定義,則自動添加
數組刪除:
uset a
數組元素刪除:
unset a[1]
數組分片:
定義數組:a=(`seq 1 10`)
echo ${a[@]:0:3} #從第一個元素開始,截取3個
echo ${a[@]:1:4} #從第二個元素開始,截取4個
echo ${a[@]:0-3:2} #從倒數第三個元素開始,截取2個
數組替換:
echo ${a[@]/3/100}
a=(${a[@]/3/100})
需求:使用shell定製各類個性化告警工具,但須要統一化管理、規範化管理
思路:指定一個腳本包,包含主程序、子程序、配置文件、郵件引擎、輸出日誌等
主程序:做爲整個腳本的入口,是整個系統的命脈
配置文件:是一個控制中心,用它來開關各個子程序,指定各個相關聯的日誌文件
子程序:這個纔是真正的監控腳本,用來監控各個指標
郵件引擎:是由一個python程序來實現,它能夠定義發郵件的服務器、發郵件人以及發件人密碼
輸出日誌:整個監控系統要有日誌輸出
要求:咱們的機器角色多種多樣,可是全部機器上都要部署一樣的監控系統,也就說全部機器無論什麼角色,整個程序框架都是一致的,不一樣的地方在於根據不一樣的角色,定製不一樣的配置文件