Files
docker-backup/llmdoc/reference/coding-conventions.md
Wang Defa 4d00283654 feat: 实现 Docker 备份系统,支持远程一键安装
实现功能:
- 文件夹和 MySQL 容器数据库备份
- tar.gz 压缩和自动清理旧备份
- systemd 定时任务集成
- 远程一键安装脚本(通过 Gitea 仓库)
- 完整的 llmdoc 文档系统

安装方式:
bash <(curl -sL https://gitea.bcde.io/wangdefa/docker-backup/raw/branch/main/install.sh)

配置文件位置:/etc/docker-backup/config.yml
命令:docker-backup, docker-backup-cleanup
2025-12-25 15:02:07 +08:00

2.5 KiB
Raw Permalink Blame History

Bash 脚本编码约定

1. 脚本结构约定

1.1 基本骨架

  • 必须以 #!/bin/bash 开头
  • 使用 set -eset -o pipefail 启用严格错误处理
  • 按照以下顺序组织脚本:
    1. Shebang
    2. 文件描述注释
    3. 变量和常量定义
    4. 日志和颜色输出函数
    5. 主要功能函数
    6. 主函数(main()
    7. 主函数调用

1.2 错误处理

  • 使用 set -e 在任何命令执行失败时立即退出脚本
  • 使用 set -o pipefail 确保管道命令链任何一个失败都返回失败状态
  • 对于可能失败的操作,编写明确的错误检查和日志记录机制

2. 命名约定

2.1 变量命名

  • 全局变量使用大写,单词间使用下划线分隔
    • 正确: SCRIPT_DIR, DEFAULT_INSTALL_DIR
  • 局部变量使用小写,单词间使用下划线分隔
    • 正确: backup_type, temp_backup_dir

2.2 函数命名

  • 使用小写,单词间使用下划线分隔
  • 动词 + 名词的形式
    • 正确: install_dependencies(), check_root()
    • 错误: Dependencies(), rootCheck()

3. 日志记录约定

3.1 日志级别

  • 使用以下日志级别函数:
    • log_info(): 普通信息
    • log_warn(): 警告信息
    • log_error(): 错误信息

3.2 日志输出

  • 日志应包含时间戳
  • 使用颜色区分不同日志级别
  • 日志消息应简洁明了,描述当前操作或状态

4. 注释风格

4.1 文件头注释

  • 使用 ###############################################################################
  • 包含脚本名称和简要功能描述

4.2 函数注释

  • 在函数定义前使用块注释
  • 描述函数的目的和关键行为

4.3 行内注释

  • 仅在代码复杂或不明显时使用
  • 解释 "为什么" 而非 "做什么"

5. 参数和配置处理

5.1 参数解析

  • 使用 case 语句处理命令行参数
  • 提供帮助选项(-h, --help
  • 对无效参数给出明确错误提示

5.2 配置加载

  • 使用配置文件(如 YAML管理可配置参数
  • 提供合理的默认值
  • 在加载配置时进行有效性检查

6. 性能和安全最佳实践

6.1 依赖检查

  • 在脚本开始检查所有必需的外部工具
  • 为缺失的依赖提供明确的安装指导

6.2 权限管理

  • 对于需要特权的脚本,明确检查 root 权限
  • 谨慎处理文件和目录权限

7. 示例项目特定约定

本项目脚本特有的一些约定:

  • 使用 BASH_SOURCE[0] 获取脚本所在目录
  • 支持通过环境变量覆盖默认配置
  • 使用 trap 注册清理函数