目录
一、函数
函数的作用
将命令序列按格式写在一起
可方便重复使用命令序列
函数基本格式
[function] 函数名(){
命令序列
[return x] #使用return或exit可以显示的结束函数
}
或者#也可以省略掉[function],它表示该函数的功能
函数名() { #函数名后面()是没有内容的
命令序列 #我们执行的命令内容放在{}里面
}
注意事项:
1.直接写函数中调用
2函数直接写函数名同名函数后一个生效
3.调用函数一定要先定义
4.只要先定义了调用的其他函数定义顺序无关
例子
简单函数调用
二
三、
例子
函数的返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值
函数的使用原则
函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
退出状态码必须是0~255,超出时值将为256取余
例子
例子:用return返回值
#!/bin/bash
user () {
if [ $USER = root ]
then echo "这是管理员用户"
else
echo "这不是管理员"
return 1
fi
}
user
函数的传参
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…即使用位置参数来实现参数传递。
函数名称 参数1 参数2 参数3...
$1 $2 $3 ......${10} ${11}......
例。通过位置变量进行求和
调用函数删除文件
函数的作用范围
函数在Shell脚本中仅在当前Shell环境中有效
Shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令
local一般用于局部变量声明,多在在函数内部使用。
1、shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止。
2、shell函数定义的变量默认是global的,其作用域从“函数被调用时执行变量定义的地方”开始,到shell结束或被显示删除处为止。函数定义的变量可以被显示定义成local的,其作用域局限于函数内。但请注意,函数的参数是local的。
3、如果同名,Shell函数定义的local变量会屏蔽脚本定义的global变量。
例子(有local是定义局部变量,局部变量i=8,全局变量i=9,最后执行结果8和9)