文章目录
- 一、什么是函数?
- 二、函数的定义方式
-
- [1. 普通写法](#1. 普通写法)
- [2. 带 `function` 关键字写法](#2. 带
function关键字写法)
- 三、函数的调用
- 四、函数参数
- 五、函数返回值
-
- [1. 使用 `return` 返回状态码(0~255)](#1. 使用
return返回状态码(0~255)) - [2. 使用 `echo` 返回值](#2. 使用
echo返回值)
- [1. 使用 `return` 返回状态码(0~255)](#1. 使用
- 六、函数与全局变量/局部变量
一、什么是函数?
在 Shell 中,函数就是一段可以重复调用的脚本代码块。
它的作用类似于 C、Python、Java 中的函数,支持 参数传递 和 返回值。
二、函数的定义方式
在 Shell 中定义函数有两种写法:
1. 普通写法
bash
function_name() {
commands
}
2. 带 function 关键字写法
bash
function function_name {
commands
}
三、函数的调用
定义函数后,只需要写函数名即可调用:
bash
#!/bin/bash
hello() {
echo "Hello, Shell!"
}
# 调用函数
hello
输出结果:
Hello, Shell!
四、函数参数
在函数中,可以通过 特殊变量 来获取传入的参数:
$1表示第 1 个参数$2表示第 2 个参数$#表示参数个数$@表示所有参数(以列表形式)$*表示所有参数(整体形式)
示例
bash
#!/bin/bash
show_params() {
echo "第一个参数: $1"
echo "第二个参数: $2"
echo "参数总数: $#"
echo "所有参数(分开): $@"
echo "所有参数(整体): $*"
}
show_params "Linux" "Shell" "Function"
运行结果:
第一个参数: Linux
第二个参数: Shell
参数总数: 3
所有参数(分开): Linux Shell Function
所有参数(整体): Linux Shell Function
五、函数返回值
在 Shell 中,函数返回值有两种方式:
1. 使用 return 返回状态码(0~255)
bash
#!/bin/bash
check_num() {
if [ $1 -gt 10 ]; then
return 0 # 0 表示成功
else
return 1 # 1 表示失败
fi
}
check_num 15
if [ $? -eq 0 ]; then
echo "数字大于10"
else
echo "数字不大于10"
fi
输出:
数字大于10
2. 使用 echo 返回值
因为 return 只能返回整数(状态码),要返回字符串或其他数据,常用 echo 并结合命令替换 $()。
bash
#!/bin/bash
sum() {
echo $(($1 + $2))
}
result=$(sum 10 20)
echo "结果是: $result"
输出:
结果是: 30
六、函数与全局变量/局部变量
默认情况下,函数内定义的变量是 全局变量 。
如果希望只在函数内部有效,需要使用 local 关键字。
bash
#!/bin/bash
myfunc() {
local name="Shell"
echo "函数内部: $name"
}
name="Linux"
myfunc
echo "函数外部: $name"
输出:
函数内部: Shell
函数外部: Linux