shell中的函數

1. shell函數格式

shell函數的本質是一段可以重複使用的腳本代碼,這段代碼被提前編寫好,放在指定位置,使用時直接調用即可。
shell中的函數和C++、JAVA、Python、C#等其他編程語言中的函數類似,只是在語法中有所差別。

shell函數定義的語法格式:

function name() {
	statements
	[return value]	
}

對各個部分的說明:
function是shell中的關鍵字,專門用來定義函數;
name是函數名;
statements是函數要執行的代碼,也就是一組語句;
return value表示函數的返回值,其中return式shell關鍵字,此處用方括號括起來表示這部分可以寫也可以不寫;
由{ }包圍的部分稱爲函數體,調用一個函數,實際上就是執行函數體中的代碼

函數定義的簡化寫法:

  • 函數定義時可以不寫function關鍵字:
name() {
	statements
	[return value]
}
  • 如果寫了function關鍵詞,可以省略函數名後面的括號:
function name {
	statements
	[return value]
}

推薦第二種寫法,可以在排查代碼錯誤時更方便。

2. 函數的調用

調用shell函數時可以給他傳遞參數,也可以不傳遞。

不傳遞參數時,直接給出函數名即可:

name

如果要傳遞參數,多個參數之間以空格分開:

name param1 param2 param3

注意:不管是哪種形式,函數名後都不需要帶括號

例:

#!/bin/bash

#定義函數
function url() {
        echo "http://www.baidu.com"
}

#函數的調用
url

在這裏插入圖片描述

3. 函數的參數

和其他編程語言不同的是,shell函數在定義時不能指明參數,但在調用時卻可以傳遞參數,並且給它傳遞什麼參數它就接收什麼參數。

函數參數是shell位置參數的一種,在函數內部可以使用 $n 來接收
例如:$1 表示第一個參數,$2 表示第二個參數,以此類推。

除了$n,還有另外幾個比較重要的變量:

  • $# :獲取傳遞參數的個數;
  • $@ 或 $* :一次性獲取所有的參數
  • $? :獲取函數的退出狀態(返回值)

例:

#!/bin/bash

#計算所有參數的和
function get_sum() {
        local sum=0
        for n in $@
        do
                ((sum+=n))
        done
        return $sum
}

#調用函數並傳遞參數
get_sum 10 20 30 55 15
echo $?

在這裏插入圖片描述

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