Shell師徒西天取經----第五天Shell的函數

函數對於每一種編程語言來說都有,只是每一種的形式不一樣。

例如以下幾種編程語言的函數定義:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章