1. 程式人生 > >SHELL訓練營--day8__shell函式和陣列

SHELL訓練營--day8__shell函式和陣列

函式

shell 中,將實現特定功能的程式碼組合起來,即為函式體。
函式格式如下:

[ function ]  funname  [()]
{
    action;
    [return int;]
}

注意函式定義:
1.function 和(),在函式定義時,至少要保留一個。
2.函式返回,可以使用return 返回。如無返回 ,則以最後一個命令執行結果返回。
3.函式返回:return後跟數值n(0-255).
4.在函式外,獲取函式返回值,需要在呼叫該函式後立刻通過 $? 來獲得。
5.函式呼叫方法:直接使用函式名。
6.函式在使用前需要先定義。即函式體,一般都在shell指令碼最前方。

  • 函式引數

    函式引數主要是通過位置變數獲取。
    位置變數:$0 表示函式名,$n表示第n個引數。$#表示引數個數。
    其它引數:$* 將所有引數以一串字元形式展示,以空格為分隔符。
    $$ 表示 指令碼 執行時,指令碼 的程序號。

陣列

shell 只支援一維陣列。陣列,多個變數組合起來存放。
陣列中變數獲取,通過陣列下標獲取。
陣列下標,以0開始,按1遞增。

  • 陣列定義

    array_name=(value1, ... valuen)

  • 顯示陣列成員

    所有成員:echo ${a[@]} 或是:echo ${a[*]}


    顯示第0個成員:echo ${a[0]}
    獲取成員個數:echo ${#a[@]}
    取成串成員:echo ${a[@]:start_pos:count_number}
    需要注意的是,start_pos指定位置,可以從前向後指,也可指定後面固定位置。
    如:start_pos為 0-3,即為 倒數第三個位置。
    count_number為需要取的成員個數。

  • 成員賦值

    單個成員賦值:a[post]=value; echo ${a[post]}.
    需要注意,如果賦值的下標不存在。預設陣列個數會增加到新加下標位置。其它中間不存在的下標值預設為空。如a=(0,1,2); a[4]=4;echo ${a[3]};echo ${a[4]}


    陣列僅顯示時,修改陣列成員值。不修改儲存值:如

    echo ${a[@]:/2/3} ; # 表示 顯示陣列a,並將下標為2的成員值顯示為3.
  • 刪除陣列

    陣列也是一個變數。刪除該變數即可。如:a=(1,2); unset a;
    刪除陣列某個成員:unset a[post].