声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(8) until循环以及函数基本创建调用】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。
Shell 函数是指在 Shell 脚本中封装的一段可以重复调用的代码。它不仅可以减少代码冗余,还能提升脚本的可维护性与扩展性。函数通常包括 创建、调用、传参 和 返回值 四个部分。
1 函数创建
Shell 函数的定义语法如下:
函数名() {
# 函数体
}
注意:
- 函数体内可以是任意 Shell 脚本命令。
- 函数名应具有描述性,并避免与系统命令或变量名冲突。
示例:定义一个简单函数
DemoFunc() {
echo "hello world"
}
此代码定义了一个名为 DemoFunc
的函数,函数体的内容为输出字符串 "hello world"
。
2 函数调用
定义函数后,可以通过直接输入函数名来调用它。
示例:调用 DemoFunc
函数
DemoFunc
执行结果:
hello world
注意: 函数定义与调用顺序无严格要求,但在函数调用时,函数必须已定义。
3 函数传参
Shell 函数可以接收参数,通过 $1
、$2
等特殊变量来引用这些参数:
$1
表示第一个参数。$2
表示第二个参数,以此类推。
示例:函数接收单个参数
DemoFunc() {
echo "hello world"
echo "My name is $1."
}
DemoFunc xiaoyu
执行结果:
hello world
My name is xiaoyu.
在函数调用时传入参数 xiaoyu
,并通过 $1
引用该参数。
示例:函数接收多个参数
DemoFunc() {
echo "hello world"
echo "My name is $1, and my age is $2 years old."
}
DemoFunc xiaoyu 27
执行结果:
hello world
My name is xiaoyu, and my age is 27 years old.
此处 $1
和 $2
分别引用传入的两个参数。
4 函数返回值
Shell 函数的返回值通常通过 return
指定,范围为 0-255
,或通过全局变量(如 $?
或自定义变量)返回。
示例:通过 return
返回值
DemoFunc() {
return 42
}
DemoFunc
echo "Function returned: $?"
执行结果:
Function returned: 42
示例:通过变量返回值
DemoFunc() {
local result=$(( $1 + $2 ))
echo $result
}
sum=$(DemoFunc 10 20)
echo "Sum is $sum"
执行结果:
Sum is 30
解析: 函数通过 echo
输出结果,调用函数时用 $()
捕获返回的值并赋予变量 sum
。
5 总结
功能 | 关键点 | 示例代码 |
---|---|---|
创建函数 | 使用 函数名() 定义函数;函数体写在大括号 {} 内 | DemoFunc() { echo "hello world"; } |
调用函数 | 直接输入函数名调用 | DemoFunc |
传递参数 | 使用 $1 、$2 等引用参数 | DemoFunc xiaoyu 27 |
返回值 | 使用 return 返回状态码,或通过 echo 输出捕获结果 | sum=$(DemoFunc 10 20) |