在 Shell 脚本中,函数可以用来封装一段可重用的代码,这些代码可以被多次调用,从而提高脚本的可维护性和复用性。
函数可以将大的工程分成若干小块,以此执行,提高代码的可读性
函数的定义通常具有以下格式:
function_name() {
# 函数体
...
}
其中,function_name
是函数名,括号中可以包含参数列表,函数体中包含实现代码。
zzr () {
a=1
b=2
c=$(($a+$b))
echo $c
}
zzr
结果显而易见 为 3
返回值
返回值:return
shell中的return 范围 0-255 超出了255就会和256取余
当函数有return 返回值是函数内部执行结果,因此echo $?值也是3,与对错无关
返回值的作用:用来判断后续的代码是否正常执行
扫描二维码关注公众号,回复:
16836001 查看本文章
函数传参
内部传参
先赋值(read -p),然后通过方法调用(ky32),函数把数值传到命令序列中(sum计算)
外部传参
需要在外部输入变量
函数变量的作用范围
sh f.sh
9 全局变量的9
8 内部变量不改变
10 let i++
没有local就听内部命令 9 8 8
有local要听全局变量
(b为全局变化,不受影响)
函数的递归
本质就是自己使用自己
pow () {
if [ $a -ne 0 ]
then
let sum=sum*b
a=$(($a-1))
pow $a $b
fi
}
sum=1
read -p "输入指数:" a
read -p "输入底数:" b
pow $a $b
echo "$sum"
计算阶乘
zzr () {
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$(($1-1))
local result=$(zzr $temp)
echo "$(($1*$result))"
fi
}
read -p "输入一个数" a
result=`zzr $a`
echo $result