shell中的函式解析

2021-12-30 06:20:34 字數 1945 閱讀 7267

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 會退出指令碼 函式若要返回具體的值而非執行狀態,考慮...