一、什么是函数?
- shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数
- 给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能
二、如何定义函数?
# 方式1
函数名()
{
函数体(一堆命令的集合,来实现某个功能)
}
# 方式2
function 函数名()
{
函数体(一堆命令的集合,来实现某个功能)
}
三、如何调用函数?
1、命令行调用
# 1.创建了一个“fun.sh”的脚本,脚本内容如下
[root@converts shells]# cat fun.sh
#!/bin/env bash
hello(){
echo '这是一个hello方法'
}
getName(){
echo '我的名字叫胖太乙'
}
# 2. 首选需要 调用一下脚本
[root@converts shells]# source fun.sh
# 3. 然后调用对应的方法
[root@converts shells]# hello
这是一个hello方法
[root@converts shells]# getName
我的名字叫胖太乙
[root@converts shells]#
2、命令行调用
在上面的“变量的分类”中讲到,$HOME/.bashrc
文件会在当前用户登录时读取。所以我们只需要将函数定义到‘.bashrc’ 中就可以全局访问。
# 1.在环境变量中定义了一个 fun 函数
[root@converts shells]# vim ~/.bashrc
# .bashrc
# User specific aliases and functions
fun(){
echo '这是在用户环境变量中的方法!'
}
# 2. 由于我已经是登录的状态, 所以需要重新登录
[root@converts shells]# sudo su
# 3. 调用
[root@converts shells]# fun
这是在用户环境变量中的方法!
[root@converts shells]#
四、函数传参
函数传参只需要在调用函数的时候, 将参数带上即可,函数内部通过 $1 $2 $3 $4.....
来获取参数
案例:
# 函数获取参数的案例
[root@converts shells]# cat fun.sh
#!/bin/env bash
printInfo(){
echo '我的名字叫' $1
echo '年龄:' $2
echo '家庭住址:'$3
}
[root@converts shells]# source fun.sh
[root@converts shells]# printInfo 胖太乙 1000 乾元山金光洞
我的名字叫 胖太乙
年龄: 1000
家庭住址:乾元山金光洞
[root@converts shells]#
五、return 返回值
- return可以结束一个函数。类似于循环控制语句break(结束当前循环,执行循环体后面的代码)。
- return默认返回函数中最后一个命令状态值,也可以给定参数值,范围是0-256之间。
- 如果没有return命令,函数将返回最后一个指令的退出状态值。
暂无评论