1.shell中的函式
函式的定義:
function_name ()
statement1
statement2
statementn
函式的呼叫:
function_name parm1 parm2
例:#!/bin/bash
sum() 。當n>=10時,需要使用$來獲取引數。
另外,還有幾個特殊字元用來處理引數:
引數處理 說明
$# 傳遞到指令碼的引數個數
$ 以乙個單字串顯示所有向指令碼傳遞的引數
$$ 指令碼執行的當前程序id號
$! 後台執行的最後乙個程序的id號
$@ 與$相同,但是使用時加引號,並在引號中返回每個引數。
$- 顯示shell使用的當前選項,與set命令功能相同。
$ 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
2.shell中的陣列
數值型別的陣列:一對括號表示陣列,陣列中元素之間使用「空格」來隔開。
例:abc_number=(1 2 3 4 5);
字串型別陣列:同樣,使用一對括號表示陣列,其中陣列中的元素使用雙引號或者單引號包含,同樣使用「空格」來隔開。
abc_string=("abc" "edf" "sss"); 或者 abc_string=('abc' 'edf' 'sss');
陣列的操作:
我們使用數值型別陣列abc_number=(1 2 3 4 5)做為源陣列進行相關的講解:獲取陣列長度,讀取某個下標的值,對某個下標賦值,刪除、分配和替換以及遍歷。
我們在shell裡面想獲取某個變數的值,使用$符開頭,如:$a或者$即可。
獲取陣列長度:
abc_length=$或$均可,即形式:$ 可得到陣列的長度。
讀取某個下標的值
arr_index2=$,即形式:$
對某個下標賦值,如果該下標元素已經存在,會修改該下標的值為新的指定值。
例如:abc_number[2]=100,陣列被修改為(1 2 100 4 5)
如果指定的下標已經超過當前陣列的大小,如abc_number的大小為5,指定下標為10或者11或者大於5的任意值,賦的值被追加到陣列的尾部。
例如:abc_number[13]=13,陣列被修改為(1 2 100 4 5 13)
刪除操作
清除某個元素:unset arr_number[1],這裡清除下標為1的陣列;
清空整個陣列:unset arr_number;
分片訪問
分片訪問形式為:$,注意,不包括結束下標元素的值。
例如:$,這裡分片訪問從下標為1開始,元素個數為4。
模式替換
形式為:$
例如:$
陣列的遍歷
陣列遍歷使用for語句:
for v in $; do
echo $v;
done
3.shell監控告警專案:
需求:使用shell定製各種個性化告警工具,但需要統一化管理、規範化管理。
思路:指定乙個指令碼包,包含主程式、子程式、配置檔案、郵件引擎、輸出日誌等。
主程式:作為整個指令碼的入口,是整個系統的命脈。
配置檔案:是乙個控制中心,用它來開關各個子程式,指定各個相關聯的日誌檔案。
子程式:這個才是真正的監控指令碼,用來監控各個指標。
郵件引擎:是由乙個python程式來實現,它可以定義發郵件的伺服器、發郵件人以及發件人密碼
輸出日誌:整個監控系統要有日誌輸出。
要求:我們的機器角色多種多樣,但是所有機器上都要部署同樣的監控系統,也就說所有機器不管什麼角色,整個程式框架都是一致的,
不同的地方在於根據不同的角色,定製不同的配置檔案。
bin下是主程式
conf下是配置檔案
shares下是各個監控指令碼
mail下是郵件引擎
log下是日誌。
shell中的函式
一 shell中的函式 概念 我們常常把完成固定功能,並且多次使用的一組命令或者語句封裝在乙個固定的結構中,這個結構,我們就叫做函式。1 定義方式 不傳參 格式一 function 函式名 格式二 函式名 呼叫方法 函式名 獲得返回值的方法 1 若是返回值是整數。函式名 引數1 引數2 ret 此種...
shell指令碼中的函式, shell中的陣列
示例1 bin bash 函式的使用 input input 1 a b root second fun.sh 1 a 3 fun.sh 示例2 bin bash 傳遞乙個引數給函式 input read p please input n input root second fun.sh pleas...
shell中的函式(function)
函式的定義格式如下 func name 或 function func name 格式1有可能會導致函式名和alias衝突 呼叫格式 func name p1 p2 pn 關於函式引數 需要注意的是,函式應使用return退出,而不能使用exit 會退出指令碼 函式若要返回具體的值而非執行狀態,考慮...