SHELL訓練營--day8__shell函式和陣列
阿新 • • 發佈:2018-12-28
函式
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]
.