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 教程的地址:
#!/bin/bash
#函數定義
function url(){
echo "http://c.biancheng.net/shell/"
}
#函數調用
url
運行結果:
http://c.biancheng.net/shell/
你能夠將調用放在定義的前面,也就是寫成下面的形式:
#!/bin/bash
#函數調用
url
#函數定義
function url(){
echo "http://c.biancheng.net/shell/"
}
2) 定義一個函數,計算全部參數的和:
#!/bin/bash
function getsum(){
local sum=0
for n in $@
do
((sum+=n))
done
return $sum
}
getsum 10 20 55 15 #調用函數並傳遞參數
echo $?
運行結果:
100