Shell 函数学习笔记
在 shell 编程中,函数是一组语句的集合,它们被封装在一个单元中。使用函数可以将代码模块化,使得代码结构更加清晰、可读性更强,并且方便代码复用。
函数定义
函数的定义格式为:
bashCopy Codefunction_name () {
command1
command2
...
commandN
}
其中 function_name
是函数的名称,使用英文字母和下划线命名,不能以数字开头。括号内可以省略参数列表。
以下是一个简单的函数示例:
bashCopy Codehello () {
echo "Hello World!"
}
函数调用
在脚本中可以通过函数名来调用函数。例如:
bashCopy Codehello
这将会输出 "Hello World!"。
如果需要给函数传递参数,可以在调用函数时在函数名后面加上参数列表,多个参数之间用空格分隔。例如:
bashCopy Codesay_hello() {
echo "Hello, $1 and $2"
}
say_hello "Tom" "Jerry"
这将会输出 "Hello, Tom and Jerry"。
返回值
函数可以返回一个值,使用 return
关键字。例如:
bashCopy Codeadd() {
local sum=$(($1+$2))
return $sum
}
add 2 3
echo $? # 输出 5
在上述例子中,函数 add
计算了两个数的和,并把结果存储在局部变量 sum
中。return $sum
语句将结果返回给调用者,然后 echo $?
输出函数的返回值。
实例
以下是一个使用函数实现求阶乘的脚本示例:
bashCopy Codefactorial() {
if [ $1 -le 1 ]; then
echo 1
else
local temp=$(factorial $(($1-1)))
echo $(($temp*$1))
fi
}
read -p "请输入一个正整数:" n
result=$(factorial $n)
echo "$n 的阶乘是:$result"
在这个脚本中,函数 factorial
使用递归实现了阶乘的计算。用户输入一个正整数 n
后,调用 factorial
函数来计算 n
的阶乘,并把结果保存在变量 result
中,最后输出结果。