shell 自定義函數

Shell 函數定義的語法格式以下:shell

function name() {編程

    statementsbash

    [return value]編程語言

}ide

對各個部分的說明:函數

function是 Shell 中的關鍵字,專門用來定義函數;url

name是函數名;spa

statements是函數要執行的代碼,也就是一組語句;.net

return value表示函數的返回值,其中 return 是 Shell 關鍵字,專門用在函數中返回一個值;這一部分能夠寫也能夠不寫。3d

由{ }包圍的部分稱爲函數體,調用一個函數,實際上就是執行函數體中的代碼。

函數定義的簡化寫法

若是你嫌麻煩,函數定義時也能夠不寫 function 關鍵字:

name() {

    statements

    [return value]

}

若是寫了 function 關鍵字,也能夠省略函數名後面的小括號:

function name {

    statements

    [return value]

}

我建議使用標準的寫法,這樣可以作到「見名知意」,一看就懂。

函數調用

調用 Shell 函數時能夠給它傳遞參數,也能夠不傳遞。若是不傳遞參數,直接給出函數名字便可:

name

若是傳遞參數,那麼多個參數之間以空格分隔:

name param1 param2 param3

無論是哪一種形式,函數名字後面都不須要帶括號。

和其它編程語言不一樣的是,Shell 函數在定義時不能指明參數,可是在調用時卻能夠傳遞參數,而且給它傳遞什麼參數它就接收什麼參數。

Shell 也不限制定義和調用的順序,你能夠將定義放在調用的前面,也能夠反過來,將定義放在調用的後面。

實例演示

1) 定義一個函數,輸出 Shell 教程的地址:

image.png

#!/bin/bash

#函數定義

function url(){

echo "http://c.biancheng.net/shell/"

}

#函數調用

url

運行結果:

image.png

http://c.biancheng.net/shell/

你能夠將調用放在定義的前面,也就是寫成下面的形式

image.png

#!/bin/bash

#函數調用

url

#函數定義

function url(){

echo "http://c.biancheng.net/shell/"

}

2) 定義一個函數,計算全部參數的和:

image.png

#!/bin/bash

function getsum(){

local sum=0

for n in $@

do

((sum+=n))

done

return $sum

}

getsum 10 20 55 15 #調用函數並傳遞參數

echo $?

運行結果:

image.png

100

相關文章
相關標籤/搜索