这门中级课程在 Bash 基础脚本之上加入可复用函数、受控作用域、清理处理、参数展开和数组。通过 5 个引导式实验,你将组织脚本逻辑,区分文本输出与返回状态,响应终止事件,不借助外部工具处理字符串,并安全处理集合。
最终挑战会把这些技术组合到 log_manager.sh 中:维护准备好的日志数组,在函数内生成 .backup 名称,复制存在的文件,对缺失目标发出警告,并在脚本退出时删除临时报告。
你将学到什么
- 定义和调用 Bash 函数,并通过函数参数传值
- 使用
local变量保护脚本状态,避免意外修改全局变量 - 从函数返回状态码,立即捕获
$?并根据具体结果分支 - 使用
trap为 SIGINT 和 EXIT 注册清理函数 - 通过 Bash 参数展开切片、替换字符串并提供默认值
- 声明数组、追加元素、展开全部值并使用安全引用遍历
- 在函数中把
.log替换为.backup,动态生成备份文件名 - 在一个可执行脚本中组合清理、数组、文件测试、函数和警告
本课程适合谁
本课程适合已经完成 Bash 脚本基础学习,并希望用中级技术让小型维护脚本更加模块化和可预测的学习者。
前置要求: 熟悉 Bash 脚本、变量、位置参数、条件、循环、文件测试、退出码、重定向、执行权限和基本文件命令。
学习环境: LabEx 提供的 Ubuntu 环境终端,包含 Bash、可编辑项目脚本、临时文件与信号练习,以及最终挑战所需的 3 个准备好的应用日志。
常见问题
课程如何组织?
前 5 个实验提供引导式练习。第 6 项是提示较少的挑战,你会构建一个综合清理 Trap、归档函数、数组、字符串替换和循环的 log_manager.sh。
最终日志管理器会压缩、删除或真正轮转日志吗?
不会。它把每个准备好的 .log 文件复制为同目录下的 .backup,并保留原文件,不进行压缩、保留策略、截断或 logrotate 配置。
Trap 练习会处理哪些事件?
引导式实验会为 SIGINT 和 EXIT 注册清理,使 Ctrl+C 与正常退出都能删除临时文件。最终挑战明确要求使用 EXIT Trap 删除 report.txt。
Bash 函数能使用 return 返回字符串或其他数据吗?
这些练习中不能。Bash 的 return 传递 0 到 255 的整数状态,用于控制流程;文本通过 echo 输出,或使用命令替换捕获。





