函数
函数声明
- 函数声明必须在调用前
- 不能像其他函数一样括号中带有参数,而是于执行命令般的传递参数,所以可以使用内置参数
$0是函数名,$n就是第n个参数那样 - 函数的返回值只能返回函数的状态,不能返回具体的值,通常执行成功返回0,没成功返回非0,通过函数执行后的
$?获得
fun() {
#code
}
#也可以
function fun() {
}
函数调用
- 就想使用命令一样调用函数
- 函数后面可以跟参数
fun() {
#code
}
fun val #调用并传递参数val
echo $? #查看函数的返回值
作用域
- 默认所有变量都是全局作用域下的,若想在函数中声明只有本函数作用域的变量则需要使用
local声明即可 - 当定义函数名和系统命令相同时会就近原则选择自定义的函数作为命令,恰巧该函数中又使用了那个冲突的系统命令就会陷入无限递归循环,所以只需要使用
command声明使用的是系统命令即可
ls() {
ls #会陷入无限递归
}
ls
ls() {
command ls #声明使用的是系统命令即可
}
ls
ls() {
echo 'fun ls'
}
command ls #不会调用自定义的函数,而是调用系统命令

Comments NOTHING