Shell 函式
阿新 • • 發佈:2021-07-20
一.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
七.遞迴目錄
八.函式庫
為了方便執行,可以事先在一檔案中編輯好部分常用的函式,這個稱為函式庫,在執行其他指令碼時直接呼叫存放在庫裡的函式公式等
示例:編寫一個簡單的計算函式庫