01 Shell脚本模块化编程与Linux初始化脚本实现

学习目标

通过本节内容,将全面掌握:

1. 理解 Shell 模块化编程思想:掌握将大型脚本分解为独立模块的原理与优点。 2. 掌握函数与文件模块化方法:能用函数或独立脚本文件构建清晰结构。 3. 实现模块化巡检脚本:能编写可复用、可扩展、可维护的自动化脚本系统。 4. 学会扩展与调试:在脚本中捕获错误、添加新模块、提升鲁棒性。 5. 具备实战应用能力:将模块化思想运用于企业环境,如系统巡检、初始化、自动部署等任务。

Shell 模块化编程概述

模块化编程的概念

模块化编程是将复杂任务拆分为多个独立的小模块(函数或脚本)。 每个模块只负责一个明确功能,主脚本统一调度这些模块。

这种思想使脚本更加:

模块化的优势

<sheet sheet-id="DxEeCz" token="NOTzsjgz9hI1yYtQTcEcxoC2nsb"></sheet>

Shell 模块化实现方法

Shell 模块化主要有两种方式:

函数模块化

在单个脚本中定义多个函数,然后按需调用。

示例:函数模块化脚本(可直接运行)

保存为 func_demo.sh

vim func_demo.sh

命令说明:

#!/bin/bash
# 函数模块化示例:系统信息巡检

# 1. 打印系统信息
print_system_info() {
    echo "===== 系统信息 ====="
    echo "主机名: $(hostname)"
    echo "操作系统: $(uname -s)"
    echo "内核版本: $(uname -r)"
}

# 2. 内存使用
show_memory_usage() {
    echo "===== 内存使用情况 ====="
    free -h
}

# 3. 磁盘使用
show_disk_usage() {
    echo "===== 磁盘使用情况 ====="
    df -h --output=source,pcent,target | column -t
}

# 主逻辑调用
print_system_info
show_memory_usage
show_disk_usage

命令作用:

执行结果:

关键参数:

注意事项:

关键参数:

注意事项:

注意事项:


**注意事项:**

开始系统信息巡检...
系统巡检完成

**注意事项:**

#!/bin/bash


}



    0)
        ;;
    1)
        ;;
    2)
        ;;
    3)
        ;;
    4)
        ;;
    5)
        ;;
    6)
        ;;
    7)
        ;;
    8)
        ;;
    9)
        ;;
    10)
        ;;
    *)
        ;;

注意事项:

/root/server_init

注意事项:

#!/bin/bash }


**注意事项:**

#!/bin/bash
ssh_port=${ssh_port:-22}
}

注意事项:

注意事项:

注意事项:

请选择操作: 正在执行所有操作... 优化Linux系统... Linux系统优化完成 配置阿里云源... 阿里云源配置完成 配置SSH... 请输入SSH端口(默认22): SSH配置完成,当前端口:22 配置时间同步... =============================================================================== 时间同步配置完成 配置DNS...

默认主DNS:114.114.114.114 默认备用DNS:8.8.8.8

请输入主DNS(直接回车使用默认): 请输入备用DNS(直接回车使用默认): DNS配置完成,主DNS:114.114.114.114,备用DNS:8.8.8.8 配置防火墙... 防火墙配置完成 安装常用工具... 常用工具安装完成 安装MySQL...

MySQL安装完成 安装Nginx...

Nginx安装并配置完成 检测到主网卡:ens160 静态IP配置完成 [connection] id=ens160 uuid=23b2a272-c4e7-46a3-b9e2-4308c9807f45 type=ethernet interface-name=ens160 autoconnect-priority=-999

[ipv4] address1=192.168.88.100/24,192.168.88.2 method=manual dns=114.114.114.114,8.8.8.8

[ipv6] method=disabled


**注意事项:**



请选择操作:
正在配置DNS...
配置DNS...

默认主DNS:114.114.114.114
默认备用DNS:8.8.8.8

DNS配置完成,主DNS:114.114.114.114,备用DNS:192.168.88.2
请选择操作:
正在配置静态IP...
检测到主网卡:ens160
静态IP配置完成
[connection]
id=ens160
uuid=f2b60b8b-7fa0-44f5-a963-a108bb6a50e9
type=ethernet
interface-name=ens160
autoconnect-priority=-999

[ipv4]
address1=192.168.88.101/24,192.168.88.2
method=manual
dns=114.114.114.114,192.168.88.2

[ipv6]
method=disabled

注意事项:

通过本节内容的学习,掌握了以下关键技能:

本节所学的模块化编程思想在实际运维工作中有广泛的应用,特别是在以下场景:

要进一步提高脚本的功能和灵活性,可以从以下几个方面进行优化:

模块化不仅仅是“拆分”脚本,更是一种组织结构的思维方式,是让脚本从“能跑”到“能维护”的关键能力。它使得脚本更具灵活性、可扩展性和可维护性,特别适用于团队合作和企业级自动化运维场景。

任务要求:

在现有的系统巡检脚本基础上,增加3个新功能模块:

任务要求:

改进现有的Linux初始化脚本: