高级 Shell 脚本技术

学习高级 Shell 脚本技术。本模块涵盖 Shell 函数基础、变量作用域和返回状态、使用 Trap 进行错误处理、字符串操作技术以及数组处理。您将通过实践操作实验和真实世界的挑战来掌握这些基本的 Linux 技能。

DevOps 工程师LinuxDevOps

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

这门中级课程在 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 输出,或使用命令替换捕获。

教师

labby
Labby
Labby is the LabEx teacher.