1. 程式人生 > 其它 >Shell 函式

Shell 函式

一.Shell函式

是將命令序列按格式寫在一起,可方便重複使用命令序列

二.Shell函式定義的兩種格式

*函式名不要用Linux的命令字來表示,自己定義一個變數

格式:

function 函式名 {
    命令序列    
}

或者

函式名() { 
       命令序列   
      } 

三.函式返回值

return表示退出函式並返回一個退出值,指令碼中可以用$?變數顯示該值

使用原則∶

1.函式一結束就取返同值,因為$?變數只返同執行的最後一條命令的退出狀態碼

2.退出狀態碼必須是0~255,超出時值將為除以256取餘

示例:

function db1 {
read -p "請輸入∶ "value 
return $[$value * 2]
}
db1 
echo $?

但是退出狀態碼必須為0~255,如果超出這個數值範圍將會除以256取餘數,所以可能無法顯示正確的數字

所以也可以使用echo命令也能取返回值

示例:

d1() {
read -p "請輸入∶" value 
echo $ [$value * 2]
}
result=`d1`
echo $result

四.函式傳參

在呼叫函式時後面的$1$2表示函式體中的$1$2

或者直接再函式呼叫時賦值在後面的位置引數

五.函式變數的作用範圍

函式在Shell指令碼中僅在當前Shell環境中有效

Shell指令碼中變數預設全域性有效,將變數限定在函式內部可以使用local命令

示例:

a1() { 
local i 
i=8 
echo $i
}
i=-9 
a1
echo $i

六.遞迴階乘

函式呼叫自己本身的函式shell函式的遞迴函式呼叫,就是把函式本身作為一個引數來呼叫。函式既是呼叫者又是被呼叫者,每呼叫一層就進入新的一層

示例:計算數字的階乘

5! 5*4*3*2*1=120

10!10*9*8*7*6*5*4*3*2*1=3628800

1! 1

七.遞迴目錄

八.函式庫

為了方便執行,可以事先在一檔案中編輯好部分常用的函式,這個稱為函式庫,在執行其他指令碼時直接呼叫存放在庫裡的函式公式等

示例:編寫一個簡單的計算函式庫