shell指令碼之函式
阿新 • • 發佈:2022-04-01
目錄
一、函式概念及格式
1、函式的概念
函式定義:封裝的可重複利用的具有特定功能的程式碼
函式就是可以在shell腳本當中做出一個類似自定義執行的命令的東西,最大的功能就是簡化我們很多的程式碼。
- 將命令序列按照格式書寫在一起
- 可方便重複使用命令序列
2、函式的格式
2.1 格式一
[function] 函式名 (){
命令序列
[return x] #使用return或者exit可以顯式的結束函式
}
2.2 格式二
函式名(){
命令序列
}
二、函式呼叫的方法
1、格式
函式名 [引數1] [引數2]
2、例項操作
寫一個腳本里麵包括函式備份yum線上源,建立yum本地源和清理快取安裝httpd服務
三.函式傳參
函式也是有引數的,它的內建變數與shell指令碼很類似,函式名稱代表示$0,而後續的變數也是以$1、$2…來替換的
1、例項操作一
1.1、格式
#!/bin/bash sum() { echo "第一個位置引數為$1" echo "第二個位置引數為$2" sum1=$[$1 + $2] echo $sum1 } read -p "請輸入第一個引數:" first read -p "請輸入第二個引數:" second sum $first $second
2.1、輸出結果
四、函式變數的作用範圍
1、概念
函式在shell指令碼中僅在當前shell環境中有效
shell指令碼中變數預設全域性有效
將變數限定在函式內部使用local命令
2、例項操作
2.1 格式
#!/bin/bash
func () {
local i=10
echo $i
}
func
echo $i
2.2 輸出結果
五、函式的遞迴
函式呼叫自己本身的函式
1、函式的遞迴應用:階乘
階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760 – 1826)於1808年發明的運算子號。
階乘,也是數學裡的一種術語。
階乘指從1乘以2乘以3乘以4一直乘到所要求的數。
例如所要求的數是4,則階乘式是1×2×3×4,得到的積是24,24就是4的階乘。 例如所要求的數是6,則階乘式是1×2×3×……×6,得到的積是720,720就是6的階乘。例如所要求的數是n,則階乘式是1×2×3×……×n,設得到的積是x,x就是n的階乘。
在表達階乘時,就使用“!”來表示。如h階乘,就表示為h!
階乘一般很難計算,因為積都很大。
1.1 格式
#!/bin/bash
fact () {
if [ $1 -eq 1 ];then
echo 1
else
local temp=$[$1 - 1]
local result=$(fact $temp)
echo $[$1 * $result]
fi
}
read -p "請輸入一個階乘的數字:" n
result=$(fact $n) #該值跟local result 不同
echo "$n的階乘結果是 $result"