shell腳本中的函數
shell腳本中的函數就是先把一段代碼整理到一個小單元中,並給這個小單元命名,當用到這段代碼時直接調用這個小單元名字即可。有時腳本中的某段代碼總是重複使用,如果寫成函數,每次用到時直接用函數名代替即可。
寫一個帶有函數功能的shell腳本。
vim func.sh#! /bin/bashfunction sum(){ sum=$[$1+$2] echo $sum}sum $1 $2
該腳本的執行結果
[root@aminglinux-128 ~]# sh func.sh 1 23
func.sh中的sum()爲自定義的函數。在shell腳本中函數的格式如下:
function 函數名()
{
command1
command2
}
在shell腳本中,函數一定要寫在最前面,不能出現在中間或者最後。因爲函數是要被調用的,如果還沒有出現就被調用,肯定會出錯。
shell中的數組
1. 定義數組:
[root@aminglinux-128 ~]# a=(1 2 3 4 5 )
2. 查看a數組的元素:
[root@aminglinux-128 ~]# echo ${a[*]} 1 2 3 4 5
3. 查看數組某個元素的值(數組從0開始值爲1):
[root@aminglinux-128 ~]# echo ${a[1]} 2
4. 獲取數組的元素 個數:
[root@aminglinux-128 ~]# echo ${#a[*]} 5
5. 如果下標不存在則會自動添加一個元素:
[root@aminglinux-128 ~]# echo ${a[*]} 1 2 3 4 5 b
數組元素賦值(更改替換):
[root@aminglinux-128 ~]# echo ${a[*]} 1 2 3 4 5 bbb
6. 刪除數組元素:
7. 刪除(清空)數組值:
[root@aminglinux-128 ~]# unset a [root@aminglinux-128 ~]# echo ${a[*]}
8. 設定數組:
[root@aminglinux-128 ~]# a=(`seq 1 10`)
[root@aminglinux-128 ~]# echo ${a[*]} 1 2 3 4 5 6 7 8 9 10
9. 從第1個元素開始,截取出5個數值:
[root@aminglinux-128 ~]# echo ${a[*]:0:5} 1 2 3 4 5
從第2個元素開始,截取出5個數值:
[root@aminglinux-128 ~]# echo ${a[*]:1:5} 2 3 4 5 6
10.倒數第3個元素開始,截取出2個數值:
[root@aminglinux-128 ~]# echo ${a[*]:0-3:2} 8 9
11. 截取替換,8元素打印成cc66:
[root@aminglinux-128 ~]# echo ${a[@]/8/cc66} 1 2 3 4 5 6 7 cc66 9 10
12. 替換元素值,8元素替換成cc66:
[root@aminglinux-128 ~]# a=(${a[*]/8/cc66}) [root@aminglinux-128 ~]# echo ${a[*]} 1 2 3 4 5 6 7 cc66 9 10
替換元素值,cc66元素替換成888:
[root@aminglinux-128 ~]# a=(${a[*]/cc66/888}) [root@aminglinux-128 ~]# echo ${a[*]} 1 2 3 4 5 6 7 888 9 10
20.19 告警系統需求分析
1. 需求:使用shell定製各種個性化告警工具,但需要統一化管理、規範化管理。
2. 思路:指定一個腳本包,包含主程序、子程序、配置文件、郵件引擎、輸出日誌等。
3. 主程序:作爲整個腳本的入口,是整個系統的命脈。
4. 配置文件:是一個控制中心,用它來開關各個子程序,指定各個相關聯的日誌文件。
5. 子程序:這個纔是真正的監控腳本,用來監控各個指標。
6. 郵件引擎:是由一個python程序來實現,它可以定義發郵件的服務器、發郵件人以及發件人密碼
7. 輸出日誌:整個監控系統要有日誌輸出。