频道首页
目录
📚 shell脚本中函数以及函数递归
收藏
0
前言
什么是函数?
在Bash Shell中,函数是一组被集合在一起并可以被多次调用的命令序列。函数可以接受参数并可以返回一个值。使用函数可以帮助我们组织和重复使用代码,使代码更加模块化和易于维护,可读性更强。
为什么要使用函数?
- 使用函数可以避免代码重复(可以偷懒);
- 使用函数可以将一个大的工程分割为若干小的功能模块,代码的可读性更强。
定义函数
函数的定义通常遵循以下语法:
function 函数名 {
cmd序列
}
[root@c1 ~]# function a { hostname;date; }
[root@c1 ~]# a
c1
2020年 05月 13日 星期一 14:20:48 CST
第二种常用:
函数名 () {
cmd序列
}
[root@c1 ~]# ceshi(){ hostname;date; }
第三种 不常用 不写了
!!#ff0000 注意!! 1.调用函数 直接写函数名
- 同名函数 后一个生效
- 调用函数一定要先定义函数
- 每个函数是独立的
调用 查看 删除 函数
1.调用参数
要调用函数,只需要使用函数名即可,后面可以跟上参数(如果有的话),参数之间用空格分隔
[root@c1 ~]# ceshi(){ hostname;date; }
[root@c1 ~]# ceshi #直接函数名调用
c1
2020年 05月 13日 星期一 14:15:51 CST
2.删除函数
!!#ffff00 unset 函数名!!
[root@c1 ~]# unset a #上面定义的函数a 删除
[root@c1 ~]# a
bash: a: 未找到命令...
3.查看函数
!!#ffff00 declare -F 定义函数列表!!
[root@c1 ~]# declare -F #显示所有的定义函数名
!!#ffff00 declare -f 定义函数具体内容!!
[root@c1 ~]# declare -f |grep ceshi
ceshi ()
[root@c1 ~]# ceshi
c1
2020年 05月 13日 星期一 14:49:46 CST
函数返回值
获得函数返回值的两种方式
- return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值 使用return ,退出状态码必须是0~255,超出时值将为除以256取余
cc() {
read -p "请输入一个数字:" num
return $[$num*2]
}
cc
#-----------------------
echo $?
~
[root@c1 ~]# bash ceshi.sh
请输入一个数字:60
120
[root@c1 ~]# bash ceshi.sh
请输入一个数字:500 #超过256 取不到正确值。
232
直接在函数中使用echo指令
[root@c1 ~]# bash ceshi.sh
请输入一个数字:16
32
[root@c1 ~]# bash ceshi.sh
请输入一个数字:1000
2000
函数的传参数
#!/bin/bash
sum1(){
sum=$[$1+$2]
echo $sum
}
read -p "请输入第一个位置参数:" first
read -p "请输入第一个位置参数:" second
sum1 $first $second
[root@c1 ~]# bash ceshi.sh
请输入第一个位置参数:22
请输入第一个位置参数:22
44
函数的作用范围
首先函数需要先定义 后调用 。
简单可以理解为 :
在函数内部定义的变量默认是局部变量,只在函数内部有效。通过使用 local
关键字可以明确地声明一个变量为局部变量
aa () {
#local
local i=6
echo $i
}
i=8
aa
echo $i
函数递归
函数调用自己本身的函数 比如:5阶乘是54321 6阶乘是65432*1 举例子 阶乘使用for 循环写脚本
#!/bin/bash
sum=1
i=1
read -p "请输入阶乘值:" num # 赋值 num 注意空格
for i in `seq $num`
do
sum=$[i*sum]
done
echo $sum
[root@c1 ~]# bash ceshi.sh
请输入阶乘值:6
720
[root@c1 ~]# vim ceshi.sh
[root@c1 ~]# bash ceshi.sh
请输入阶乘值:5
120
[root@c1 ~]# bash ceshi.sh
请输入阶乘值:8
40320
主页
会议室
Git管理
文章
云文档
看板