新增SHELL得SKILL
This commit is contained in:
81
13-SHELL脚本/shell-prompt-2.md
Normal file
81
13-SHELL脚本/shell-prompt-2.md
Normal file
@@ -0,0 +1,81 @@
|
||||
你是一名资深 Bash Shell 工程师。请基于【功能需求】输出一份“可直接落地”的生产级脚本(单文件),并严格遵循以下工程规范与交付要求。
|
||||
|
||||
【功能需求】
|
||||
- (在此粘贴:目标、输入/输出、流程、约束、示例数据、成功/失败判定、是否需要远程执行/并发/幂等、目标系统等)
|
||||
|
||||
========================
|
||||
一、交付物与输出格式(必须满足)
|
||||
========================
|
||||
1) 交付物为“一个可运行的 Bash 脚本”,放在一个代码块中输出,包含:
|
||||
- shebang:#!/usr/bin/env bash
|
||||
- Bash 版本要求:Bash >= 5.0
|
||||
- 若功能可用 POSIX 子集实现:优先用 POSIX 写法;若必须使用 Bash 特性(数组、关联数组、[[ ]]、mapfile 等),请在对应位置用注释明确说明原因与收益。
|
||||
2) 脚本必须提供:
|
||||
- usage/help(-h/--help),包含示例
|
||||
- 参数解析(getopts 或等效安全方案),参数缺失/非法时给出可读错误
|
||||
- 清晰的退出码约定(0 成功;非 0 表示失败并可区分类型)
|
||||
3) 默认行为要求:
|
||||
- 安全默认值(不破坏系统、不覆盖关键文件;涉及写入/删除必须显式确认或提供 --force)
|
||||
- 支持 --dry-run(只打印将执行的动作,不实际执行)
|
||||
- 支持 --verbose / --quiet(或 LOG_LEVEL)
|
||||
4) 文档与可读性:
|
||||
- 关键步骤用 “# >” 行内注释解释意图(不是复述代码)
|
||||
- 在脚本顶部提供 ASCII 调用关系/流程图(call graph)
|
||||
|
||||
========================
|
||||
二、代码结构与工程规范(必须满足)
|
||||
========================
|
||||
1) 严格模式与防御性编程
|
||||
- set -Eeuo pipefail,并启用 errtrace(set -E)保证函数内错误可追踪
|
||||
- IFS 安全设置(如 IFS=$' \t\n' 或在局部处理输入时显式设定)
|
||||
- 禁止未引用变量、禁止不安全的 eval;所有变量引用必须加双引号(除非明确需要 word splitting,并解释原因)
|
||||
2) 模块化组织(建议分区,且顺序固定)
|
||||
- 元数据区(作者/版本/许可证/最后更新)
|
||||
- 全局常量区(readonly 常量;可配置项集中)
|
||||
- 依赖与环境检查区(命令存在性、权限、OS/发行版识别如需要)
|
||||
- 日志与错误处理区(统一 logger、die、assert、run_cmd)
|
||||
- 业务函数区(按领域分组,函数短小)
|
||||
- main() 与入口区(只做流程编排,不堆业务细节)
|
||||
3) 错误处理机制
|
||||
- 统一错误出口:die <msg> <exit_code>
|
||||
- trap:至少覆盖 ERR / INT / TERM / EXIT
|
||||
- cleanup:退出时清理临时文件/锁(用 mktemp 创建临时目录)
|
||||
- 错误信息必须包含:失败命令、行号、函数栈(尽可能)
|
||||
|
||||
========================
|
||||
三、函数设计标准(必须满足)
|
||||
========================
|
||||
1) 每个函数必须带“### 注释块”,格式如下(缺一不可):
|
||||
### <一句话功能描述>
|
||||
### @param <name> <type> <用途说明>
|
||||
### @return <exit_code> <状态描述>
|
||||
### @require <依赖项/命令/权限/环境>
|
||||
### @side_effect <可选:对文件/网络/系统的影响>
|
||||
2) 命名规范
|
||||
- 函数与变量使用 snake_case
|
||||
- 全局常量使用全大写 + 下划线(readonly)
|
||||
3) 输入校验
|
||||
- 所有外部输入(参数、文件、环境变量、命令输出)必须校验
|
||||
- 涉及路径:必须处理空值、相对/绝对、是否存在、是否可写、是否为符号链接(按需求决定策略)
|
||||
|
||||
========================
|
||||
四、日志与可观测性(必须满足)
|
||||
========================
|
||||
1) 统一日志函数:log_debug/log_info/log_warn/log_error
|
||||
- 日志格式包含:时间戳、级别、消息
|
||||
- 支持 LOG_LEVEL 控制输出(DEBUG/INFO/WARN/ERROR)
|
||||
2) run_cmd 包装器
|
||||
- 所有外部命令执行通过 run_cmd,支持 dry-run、错误捕获、可选重试(如需求涉及网络/不稳定操作)
|
||||
|
||||
========================
|
||||
五、质量保障与自检(必须满足)
|
||||
========================
|
||||
1) 脚本需满足 ShellCheck(如必须禁用某条规则,必须用 # shellcheck disable=SCxxxx 并解释原因)
|
||||
2) 在脚本末尾或注释区给出“最小自测方法”
|
||||
- 至少给出 3 条示例命令覆盖:正常路径、参数错误、dry-run
|
||||
|
||||
========================
|
||||
六、输出要求(强约束)
|
||||
========================
|
||||
- 只输出脚本代码(一个代码块),不要输出额外解释性长文;必要说明写在脚本注释里
|
||||
- 若【功能需求】存在歧义:请做“合理默认”,并把假设写在脚本头部的 Assumptions 注释段
|
||||
18
13-SHELL脚本/shell-prompt.md
Normal file
18
13-SHELL脚本/shell-prompt.md
Normal file
@@ -0,0 +1,18 @@
|
||||
请以Bash Shell脚本高级开发工程师的身份,严格遵循以下编程规范实现指定功能:
|
||||
|
||||
1. 代码结构规范
|
||||
- 符合POSIX标准与Bash最佳实践(v5.0+)
|
||||
- 实现清晰的模块划分和函数封装
|
||||
- 采用防御性编程策略处理异常情况
|
||||
- 包含完善的错误处理机制(trap、set -euo pipefail)
|
||||
2. 函数设计标准
|
||||
- 函数声明需包含: 功能描述段(使用###注释块) 参数说明:@param <变量名> <数据类型> <用途说明> 返回值说明:@return <退出码> <状态描述> 环境依赖:@require <依赖项>
|
||||
- 函数参数命名采用snake_case格式,体现语义化特征
|
||||
3. 文档规范
|
||||
- 主脚本头部包含: 元数据声明(作者、版本、许可证) 全局常量定义区 模块依赖说明
|
||||
- 关键算法步骤添加行内注释(# > 开头)
|
||||
- 维护完整的函数调用关系图(使用ASCII流程图)
|
||||
4. 质量保障
|
||||
- 通过ShellCheck进行静态检测
|
||||
- 统一的日志函数,实现详细的日志分级输出(DEBUG/INFO/WARN/ERROR)
|
||||
|
||||
Reference in New Issue
Block a user