shell脚本函数介绍
1. 函数 (Functions)
定义与优势
函数是可重复使用的功能模块
优势:代码复用,直接调用解决问题
分类
内置函数:编程语言自带的函数(如
print
)自定义函数:程序员自己编写的函数
定义语法
# 方式一 function 函数名() {程序段[return int;] }# 方式二 函数名() {程序段[return int;] }
调用方式
直接使用函数名调用:
函数名
必须先定义后调用
参数传递
通过
$n
获取参数($1
第一个参数,$2
第二个参数,等等)当 n≥10 时,需使用
${n}
格式
返回值
使用
return
返回数据(只能返回 0-255 的整数)返回值存储在
$?
中如果不加 return,将以最后一条命令运行结果作为返回值
2. 数组 (Arrays)
定义方式
# 方式一 数组名=(值1 值2 值3 ... 值N)# 方式二(索引定义) 数组名[索引]=值
读取数组
${数组名[索引]} # 读取单个元素 ${数组名[*]} # 读取所有元素 ${数组名[@]} # 读取所有元素 ${#数组名[*]} # 获取数组长度 ${#数组名[@]} # 获取数组长度
遍历数组
# 方式一 for 变量 in ${数组名[*]} doecho $变量 done# 方式二 for((i=0; i<数组长度; i++)) doecho ${数组名[$i]} done
3. 加载其他文件变量
语法
. 文件名 # 注意点号和文件名间的空格 source 文件名
案例:查看root用户的CPU、内存使用情况及显示主机名和查看时间
优势
数据源和业务处理分离
代码复用和扩展性更强
4. 综合案例:猜数字游戏
游戏规则
程序内置 1-100 之间的随机数
用户猜测数字,系统提示"大了"、"小了"或"猜对了"
直到用户猜对,游戏结束
核心实现
#!/bin/bash num=$[RANDOM%100+1] # 生成1-100的随机数while true doread -p "请输入猜测的数字: " caiif [ $cai -eq $num ]; thenecho "恭喜,猜对了"exitelif [ $cai -gt $num ]; thenecho "猜大了"elseecho "猜小了"fi done
关键要点总结
函数必须定义在调用之前
函数参数通过 $1, $2... 获取
函数返回值通过 return 和 $? 处理
数组元素用空格分隔,索引从0开始
使用 source 或 . 加载外部文件变量
RANDOM 变量生成随机数