1. 程式人生 > >shell中的函數,shell中的數組,告警系統需求分析

shell中的函數,shell中的數組,告警系統需求分析

shell 系統 需求分析

shell中的函數

函數就是把一段代碼整理到了一個小單元中,並給這個小單元起一個名字,當用到這段代碼時直接調用這個小單元的名字即可。格式: function f_name() {
command
}
函數必須要放在最前面
示例1
#!/bin/bash
inp (){
echo "the first is $1"
echo "the second is $2"
echo "the third is $3"
echo "the script is $0"
echo "the number is $#"

}
inp a b c d e
這個函數是用來打印參數的

[root@linletao-001 shell]# sh fun1.sh
the first is a
the second is b
the third is c
the script is fun1.sh
the number is 5
這裏我們需要註意的是,我們的函數名不要與shell中的命令一樣。如果要去調用函數,那就在腳本結尾處的屬名就要和函數名一樣,這樣就可以調用了。

示例2
#!/bin/bash
sum() {
s=$[$1+$2]
echo $s
}
sum 1 11
運行結果為
[root@linletao-001 shell]# sh fun2.sh

12
這是一個定義加法的函數,s是一個變量,等於兩個數相加,其中$1和$2就是函數的第一個參數和第二個參數相加。
$1就表示1,$2就表示2,$s就是1+11。

示例3
#!/bin/bash
ip() {
ifconfig |grep -A1 "ens33: "|grep ‘inet‘|awk ‘{print $2}‘
}
read -p "Please input the eth name: " eth
ip $eth
這是一個專門顯示ip的腳本。A1是顯示關鍵詞以及關鍵詞下面第一行。
Please input the eth name:的意思是顯示網卡的名字。
echo "$e address is $myip"是顯示網卡的ip

運行結果為
[root@linletao-001 shell]# sh -x fun3.sh

  • read -p ‘please input the eth name:‘ eth
    please input the eth name:ens33
  • ip ens33
  • grep -A1 ‘ens33: ‘
  • ifconfig
  • grep inet
  • awk ‘{print $2}‘
    192.168.218.130

shell中的數組

一串字符串或者一串數字所形成的變量,稱之為數組,我們可以針對數組去進行操作。
例如:
定義數組 b=(一串數字或者字符串);
顯示結果 echo ${b[]}
[root@linletao-001 shell]# b=(1 2 3)
[root@linletao-001 shell]# echo ${b[
]}
1 2 3

我們也可以查看某一個元素的值
例如:
我們要查看某一個元素的值
echo ${a[2]}
[root@linletao-001 shell]# echo ${b[2]}
3
這裏有個特殊性,數組從0開始,也就是0是第一個元素。

我們也可以顯示元素的個數
echo ${#b[]} 獲取數組的元素個數,#表示元素個數。
例如:
[root@linletao-001 shell]# echo ${#b[
]}
3

數組賦值
我們也可以針對數組的其中一個元素進行賦值。
[root@linletao-001 shell]# b[3]=a
[root@linletao-001 shell]# echo ${b[]}
1 2 3 a
這裏面我們新增加了一個元素a,在打印的時候直接就排在的後面,這是因為下標不存在則會自動添加一個元素
也可以進行替換
[root@linletao-001 shell]# b[0]=aaa
[root@linletao-001 shell]# echo ${b[
]}
aaa 2 3 a

我們也可以將數組的值刪除,用unset這個命令
[root@linletao-001 shell]# echo ${b[]}
aaa 2 3 a
[root@linletao-001 shell]# unset b[3]
[root@linletao-001 shell]# echo ${b[
]}
aaa 2 3

數組分片
有時候我們要截取數組中的一部分
[root@linletao-001 shell]# echo ${a[*]}
1 2 3 4 5 6 7 8 9 10
例如
我們要截取從4到7

4 5 6 7
從後面開始截取

8 9
這裏我們需要註意的是,從後面截取的話必須要寫0-,否則不會成功。

數組的替換
[root@linletao-001 shell]# echo ${a[]/8/6}
1 2 3 4 5 6 7 6 9 10
我們也可以直接賦值
[root@linletao-001 shell]# echo ${a[
]/3/100}
1 2 100 4 5 6 7 8 9 10
[root@linletao-001 shell]# echo ${a[*]/100/3}
1 2 3 4 5 6 7 8 9 10

告警系統需求分析

需求:使用shell定制各種個性化告警工具,但需要統一化管理、規範化管理。
思路:指定一個腳本包,包含主程序、子程序、配置文件、郵件引擎、輸出日誌等。
主程序:作為整個腳本的入口,是整個系統的命脈。
配置文件:是一個控制中心,用它來開關各個子程序,指定各個相關聯的日誌文件。
子程序:這個才是真正的監控腳本,用來監控各個指標。
郵件引擎:是由一個python程序來實現,它可以定義發郵件的服務器、發郵件人以及發件人密碼
輸出日誌:整個監控系統要有日誌輸出
技術分享圖片

shell中的函數,shell中的數組,告警系統需求分析