函數(shù)可以有效減少您重復編寫程序段的工作量,可隨時重復調用。
function_name() {
commands
}
function function_name() {
commands
}
function_name() {commands;}
function function_name() {commands;}
注:
- 請仔細觀察空格,嚴格遵守語法格式。
-commands
是函數(shù)主體,即命令集。
- 使用單行壓縮函數(shù)時,;
必須跟隨函數(shù)主體中的最后一個命令。
- 您最好始終保持功能性名稱的描述性,以方便您在封裝完畢之后調用。
示例:
#!/bin/bash
W3Cschool(){
echo "Welcome to W3Cschool"
}
W3Cschool
執(zhí)行后得到以下結果:
Welcome to W3Cschool
在 Bash 中,在默認情況下所有變量都定義為全局變量,即使在函數(shù)內部聲明也是如此。
您可以使用local
關鍵字在函數(shù)內部聲明局部變量,該變量只能夠在該函數(shù)內部使用。同其他編程語言一樣,這意味著您可以聲明相同名稱的全局變量。
#!/bin/bash
str1="abc"
str2="bcd"
fun(){
local str1="123"
str2="234"
echo "Inside function:str1_value is ${str1},str2_value is ${str2}."
}
echo "Before executing function:str1_value is ${str1},str2_value is ${str2}."
fun
echo "After executing function:str1_value is ${str1},str2_value is ${str2}."
執(zhí)行后得到以下結果:
Before executing function:str1_value is abc,str2_value is bcd.
Inside function:str1_value is 123,str2_value is 234.
After executing function:str1_value is abc,str2_value is 234.
注:
- 由執(zhí)行結果得出。
1. 在變量名相同的情況下,局部變量的優(yōu)先級在函數(shù)內部高于全局變量??梢岳斫鉃榫徒瓌t。
2. 全局變量可以在函數(shù)內部更改它的值。
在 Bash 函數(shù)中,其返回值是執(zhí)行的最后一個語句的狀態(tài)。1-255(十進制)范圍內表示失敗,除此之外表示成功。
return
語句指定返回狀態(tài),并將其分配給$?
。該語句會終止函數(shù)的調用。如下所示: #!/bin/bash
fun(){
echo "result"
return 66
}
fun
echo $?
執(zhí)行后得到以下結果:
result
66
#!/bin/bash
fun(){
fun_result="value"
}
fun
echo $fun_result
執(zhí)行后得到以下結果:
value
#!/bin/bash
fun(){
local fun_result="value"
echo "$fun_result"
}
fun
echo $fun_result
執(zhí)行后得到以下結果:
value
注:
- 利用$()
機制將函數(shù)執(zhí)行結果分配給變量fun_result
,以此保存函數(shù)的執(zhí)行結果。
若您想要將任意數(shù)量的參數(shù)傳遞給 Bash 函數(shù),只需要將它們放在調用的函數(shù)名后面,以空格分隔,以" "
將參數(shù)轉義。
注:
- 參數(shù)傳遞的順序位為$1
、$2
···$n
,在傳參時應嚴謹?shù)母鶕?jù)需要排序以達到您所期望的效果。
-$#
保存?zhèn)鬟f給函數(shù)的函數(shù)的位置參數(shù)或數(shù)量。
-$*
或$@
保存?zhèn)鬟f給參數(shù)的所有位置參數(shù)或參數(shù)。
示例:
#!/bin/bash
fun(){
echo "Welcome to $1"
}
fun "W3Cschool"
執(zhí)行后得到以下結果:
Welcome to W3Cschool
更多建議: