目录
函数
什么是函数
所谓函数,与其他语言中的函数没有太大的本质区别。它们是完成特定功能的代码块,这个代码块是可以重复使用的,并是一组命令或者语句组成
在Shell中,函数本质上就是将函数名称与要实现的特殊功能的代码进行引用的一种方式
在Shell中函数具有以下的优势:
把相同的程序代码定义函数,这样就可以重复利用,从而提长开放的效率 |
增加了程序代码段的可读性和提升管理效率 |
可以实现程序功能的模块化。使得程序具备通用性 |
函数的语法
在Shell中,函数具有以下的语法结构:
#完整结构
function 函数名称() {
指令或语句
return [返回值]
}
#简化结构
function 函数名称 {
指令或语句
return [返回值]
}
#进一步简化的结构
函数名称() {
指令或语句
return [返回值]
}
函数的调用
在Shell中,调用函数之前,该函数必须存在
调用函数的基本语法如下:
函数名称 [参数1 参数2 参数3 ......]
对于函数的调用,可以有以下方法:
$# | 获取参数的个数 |
$1、$2、$3...... | 获取是第几个参数 |
$@ 或者 $* | 获取所有的参数列表 |
示例:
定义一个名称叫 fun 的函数,并且调用 fun 函数
[root@openEuler ~]# cat fun1.sh
#!/bin/bash
# 定义一个名称叫 fun 的函数
fun() {
echo "the function has $# parameters"
echo "all parameters $@"
echo "first parameter $1"
echo "second parameter $2"
}
# 调用定义好的 fun 函数
fun hello world
[root@openEuler ~]# bash fun1.sh
the function has 2 parameters
all parameters hello world
first parameter hello
second parameter world
[root@openEuler ~]#
注意:
在Shell中,函数是先定义再使用,如果是先使用再定义,就会报错
报错示例:
[root@openEuler ~]# cat fun1.sh
#!/bin/bash
#先调用 fun 函数
fun hello world
# 再定义 fun 函数
fun() {
echo "the function has $# parameters"
echo "all parameters $@"
echo "first parameter $1"
echo "second parameter $2"
}
[root@openEuler ~]# bash fun1.sh
fun1.sh: line 3: fun: command not found
如果函数只声明了,但是没有调用这个函数,那么该函数不会执行。但是我们可以使用 . 或者 source 来先执行这个脚本,让函数放到当前的 Shell 环境中,此时我们在 Shell 环境中就可以执行这个函数
示例:
[root@openEuler ~]# cat fun1.sh
#!/bin/bash
#只声明 fun 函数,但是没调用函数
fun() {
echo "the function has $# parameters"
echo "all parameters $@"
echo "first parameter $1"
echo "second parameter $2"
}
#将脚本中的函数放到当前shell 环境中
[root@openEuler ~]# source ./fun1.sh
[root@openEuler ~]# fun 1 2
the function has 2 parameters
all parameters 1 2
first parameter 1
second parameter 2
函数的返回值
在 Shell 中,函数也是可以有返回值的,但是它和其他语言中的函数返回值不太相同
在函数中如果使用 return 语句来退出函数,并返回函数的值时,那么在函数外就需要使用 echo $? 来获取返回的值 |
在函数中如果使用的是 echo 输出,那么在函数外边就可以使用 变量=$(函数名称) 来获取返回的值 |
注意: