函數對於每一種編程語言來說都有,只是每一種的形式不一樣。
例如以下幾種編程語言的函數定義:
java的函數爲方法形式爲:
修飾符 返回值類型 函數名 ( [ 參數類型1 參數名1,參數類型2 參數名2.... ] ){
// [ ] 裏面表示可選項,即參數不是必須的
執行語句...
return 返回值; //返回值的類型必須與返回值類型一致
}
python函數形式爲:
def 函數名(參數1,參數2,......):
執行語句
return 返回值; //選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。
Shell的函數定義爲:
function (){
action;
[return int;]
}
function函數可以帶參數也可以不帶參數
function返回,可以加上也可以不加,不加默認返回最後一條命令的結果,return後面跟數值(0-255)
使用實例:
#不帶返回值,默認返回命令執行結果
demoFun(){
echo "Shell測試函數"
}
echo "準備開始執行函數"
demoFun
echo "函數執行完畢"
# 帶return返回
funWithReturn(){
echo "--------------這個函數執行數字相加-----------"
echo "請輸入相加數字:"
read Num1
echo "請輸入第二個相加的數:"
read Num2
echo "你輸入的兩個數字分別爲${Num1}和${Num2}"
return $((${Num1}+${Num2}))
}
funWithReturn
echo "輸入兩個數的和爲:${?}!"
# 函數帶參數
:<<EOF
$10不能獲取第十個參數,獲取第十個參數需要${10}
當參數大於十個的時候要使用${n}這樣來獲取參數
$#傳遞到腳本的參數述個數
$*以一個單字符顯示所有腳本傳遞的參數
$$ 腳本運行的當前進程的ID號
$! 後臺運行的最後一個進程的ID號
$@ 與$*相同,但是使用時加引號,並在引號返回每個參數
$- 顯示Shell使用的當前選項,與set命令功能相同
$? 顯示最後退出的狀態,0表示沒有錯誤,其它數字表示出錯(僅僅對上一條指令負責,一旦函數返回值沒有保存入參數 ,那麼其返回值將不能通過$?獲得)
EOF
funWidthParam(){
echo "第一個參數爲:$1!"
echo "第二個參數爲:$2!"
echo "第三個參數爲:$3!"
echo "第三個參數爲:$4!"
echo "第三個參數爲:$4!" echo "第三個參數爲:$5!"
echo "第三個參數爲:$4!" echo "第三個參數爲:$6!"
echo "第三個參數爲:$7!"
echo "第三個參數爲:$8!"
echo "第三個參數爲:$9!"
echo "第三個參數爲:${10}!"
echo "一共有$#個參數!"
echo "所有字符串:$*!"
}
funWidthParam 18 24 32 46 58 64 71 81 93 100