Shell 函数学习笔记

在 shell 编程中,函数是一组语句的集合,它们被封装在一个单元中。使用函数可以将代码模块化,使得代码结构更加清晰、可读性更强,并且方便代码复用。

函数定义

函数的定义格式为:

bashCopy Code
function_name () { command1 command2 ... commandN }

其中 function_name 是函数的名称,使用英文字母和下划线命名,不能以数字开头。括号内可以省略参数列表。

以下是一个简单的函数示例:

bashCopy Code
hello () { echo "Hello World!" }

函数调用

在脚本中可以通过函数名来调用函数。例如:

bashCopy Code
hello

这将会输出 "Hello World!"。

如果需要给函数传递参数,可以在调用函数时在函数名后面加上参数列表,多个参数之间用空格分隔。例如:

bashCopy Code
say_hello() { echo "Hello, $1 and $2" } say_hello "Tom" "Jerry"

这将会输出 "Hello, Tom and Jerry"。

返回值

函数可以返回一个值,使用 return 关键字。例如:

bashCopy Code
add() { local sum=$(($1+$2)) return $sum } add 2 3 echo $? # 输出 5

在上述例子中,函数 add 计算了两个数的和,并把结果存储在局部变量 sum 中。return $sum 语句将结果返回给调用者,然后 echo $? 输出函数的返回值。

实例

以下是一个使用函数实现求阶乘的脚本示例:

bashCopy Code
factorial() { 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 中,最后输出结果。