1. 程式人生 > 其它 >shell指令碼之函式

shell指令碼之函式

目錄

一、函式概念及格式

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"  

1.2 例項操作