函數(shù)
函數(shù)可以讓我們將一個(gè)復(fù)雜功能劃分成若干模塊缚去,讓程序結(jié)構(gòu)更加清晰路克,代碼重復(fù)利用率更高樟结。像其他編程語言一樣,Shell 也支持函數(shù)衷戈。Shell 函數(shù)必須先定義后使用狭吼。
Shell 函數(shù)的定義格式如下:
function_name () {
list of commands
[ return value ]
}
如果你愿意,也可以在函數(shù)名前加上關(guān)鍵字 function:
function function_name () {
list of commands
[ return value ]
}
函數(shù)返回值殖妇,可以顯式增加return語句刁笙;如果不加,會(huì)將最后一條命令運(yùn)行結(jié)果作為返回值谦趣。
Shell 函數(shù)返回值只能是整數(shù)疲吸,一般用來表示函數(shù)執(zhí)行成功與否,0表示成功前鹅,其他值表示失敗摘悴。如果 return 其他數(shù)據(jù),比如一個(gè)字符串舰绘,往往會(huì)得到錯(cuò)誤提示:“numeric argument required”蹂喻。
如果一定要讓函數(shù)返回字符串,那么可以先定義一個(gè)變量捂寿,用來接收函數(shù)的計(jì)算結(jié)果口四,腳本在需要的時(shí)候訪問這個(gè)變量來獲得函數(shù)返回值。
例子:
#!/bin/bash
# Define your function here
Hello () {
echo "Url is http://see.xidian.edu.cn/cpp/shell/"
}
# Invoke your function
Hello
調(diào)用函數(shù)只需要給出函數(shù)名秦陋,不需要加括號(hào)
例子
funWithReturn(){
echo "The function is to get the sum of two numbers..."
echo -n "Input first number: "
read aNum
echo -n "Input another number: "
read anotherNum
echo "The two numbers are anotherNum !"
return aNum+?
echo "The sum of two numbers is ? 來獲得蔓彩。
刪除函數(shù)
unset .f function_name
函數(shù)參數(shù)
調(diào)用函數(shù)時(shí)可以向其傳遞參數(shù)。在函數(shù)體內(nèi)部,通過 1表示第一個(gè)參數(shù),1 !"
echo "The value of the second parameter is 10 !"
echo "The value of the tenth parameter is {11} !"
echo "The amount of the parameters is * !" # 傳遞給函數(shù)的所有參數(shù)
}
注意更卒,{10}。當(dāng)n>=10時(shí)逞壁,需要使用{i}結(jié)收傳遞給函數(shù)的第幾個(gè)參數(shù)。
* 顯示所有傳遞給函數(shù)的參數(shù)绳瘟。
*相同,但是略有區(qū)別姿骏,請查看Shell特殊變量糖声。
$? 函數(shù)的返回值。