函數調用
函數的調用:
可在交互式環境下定義函數,即直接在bash命令行裏寫函數和調用函數。
可將函數放在腳本文件中作爲它的一部分,即在同一個腳本文件裏調用函數。
可放在只包含函數的單獨文件中,即其他shell腳本可以調用這個文件,用. path/to/functions_file或者source path/to/functions_file
函數調用很簡單:
無參數:function_name
有參數:functions_name arg1 arg2 ... argN
functions_name爲函數名,arg爲argument(參數)的意思。在函數體中當中,可使用$1, $2調用這些參數;還 可以使用$@, $*, $#等特殊變量
函數返回值
函數有兩種返回值:
函數的執行結果返回值:
(1) 使用echo等命令進行輸出
(2) 函數體中調用命令的輸出結果
函數的退出狀態碼:
(1) 默認取決於函數中執行的最後一條命令的退出狀態碼
(2) 自定義退出狀態碼,其格式爲:
return 從函數中返回,用最後狀態命令決定返回值。
return 0 無錯誤返回。
return 1-255 有錯誤返回。
函數中的局部變量
當函數中有變量的時候,和函數體外的變量容易衝突,這時候可以用局部變量
在函數中定義局部變量的方法:
local NAME=VALUE
環境函數(全局函數)
export -f func或者declare -fx func
declare中,-f的意思是function,-x的意思是export
遞歸函數
函數直接或間接調用函數自身。
階乘:
#!/bin/bash
fact() {
if [ $1 -eq 0 -o $1 -eq 1 ]; then
echo 1
else
echo $[$1*$(fact $[$1-1])]
fi
}
fact $1