什么是函数?
在Shell编程中,函数是一种可重用的代码块,用于执行特定的任务操作。函数可以接收参数,并可以返回一个值。函数通常用来封装一系列相关的指令或操作,以便在脚本中进行重复使用。
函数在Shell脚本中提供了以下一些优势
- 代码重用:使用函数可以将一组相关的指令封装起来,以便多次调用,避免重复编写相同的代码。
- 模块化和组织性:函数可以帮助将脚本分解为更小、更易读和更可理解的模块,使代码更具组织性和可维护性。
- 参数传递:函数可以接收参数作为输入,并根据参数的不同执行不同的操作。
- 封装与隐藏:函数可以将内部的逻辑和实现细节隐藏在函数内部,只向外部暴露函数的接口,增强了代码的可读性和安全性。
如何使用函数
函数的使用必须遵循的原则:先定义,后调用
修理工事先准备好工具的过程,即,定义函数
修理工遇到应用场景哪来工具就用即函数的调用
1.先定义
2.后调用
函数的定义
function foo() {
cmd1
cmd2
cmd3
}
function foo {
cmd1
cmd2
cmd3
}
foo() {
cmd1
cmd2
cmd3
}
#foo指函数名:就相当于一个变量名,指向函数的内存地址
函数的调用语法
直接使用函数名即可
函数传参语法
args=$1
function foo() {
args=$1
cmd1
cmd2
cmd3
}
#举例
函数分为两个阶段:
1.调用阶段:运行函数体代码
2.定义阶段:只检测语法,不执行代码
#!/bin/bash
max (){
x=$1
y=$2
if [ $x -gt $y ];then
echo $x
else
echo $y
fi
}
max
[root@zabbix01 ~]# sh foo.sh 1 2
# 传参无效,所以这里面我们需要知道,bash的参数和函数的参数不是一个
函数参数 VS 脚本参数
特殊变量 | 脚本 | 函数 |
---|---|---|
$n | 脚本的第N个参数 | 函数的第N个参数 |
$0 | 脚本名称 | 脚本名称 |
$*/$@ | 脚本的所有参数 | 函数的所有参数 |
$# | 脚本的所有参数 | 函数的所有参数 |
函数的返回值
函数的返回值,需要注意:
#在Python中
1.返回值没有类型限制
2.返回值没有个数限制
1)如果返回1个值:调用函拿到的结果就是一个值
2)如果返回多个值:调用函数拿到的结果就是一个元组
3)如果返回0个值:调用函数拿到的结果就是None
#在Shell中
1.函数返回值,必须是numeric,数字
## 字符串类型报错
foo.sh: line 15: return: zls: numeric argument required
## 多个返回值报错
foo.sh: line 15: return: too many arguments
#返回值的作用很重要,方便我们后续的判断,包括变量的传递,在这里说可能体现不出来,后续我们写脚本的时候用到,就明白了。