Shell脚本陷阱处理器生成器 trap-handler-generator

这是一个用于自动生成Shell脚本陷阱处理器的工具,专注于资源清理、信号捕获和优雅关闭。主要功能包括:生成清理函数、处理中断信号、管理临时资源、实现错误恢复机制。适用于自动化脚本、后台服务、批处理任务等场景。关键词:Shell脚本, 陷阱处理, 资源清理, 信号捕获, 优雅关闭, 错误处理, Bash脚本, 自动化运维

DevOps 0 次安装 0 次浏览 更新于 2/23/2026

名称: 陷阱处理器生成器 描述: 为shell脚本生成用于清理、信号处理和优雅关闭的陷阱处理器。 允许工具: 读取, 写入, 编辑, Bash, Glob, Grep

陷阱处理器生成器

为shell脚本生成陷阱处理器。

功能

  • 生成清理陷阱处理器
  • 实现信号处理
  • 创建优雅关闭逻辑
  • 设置资源清理
  • 处理嵌套陷阱
  • 生成错误处理器

生成模式

#!/usr/bin/env bash

# 待清理的临时资源
declare -a CLEANUP_ITEMS=()
CLEANUP_DONE=false

# 注册清理项
register_cleanup() {
    CLEANUP_ITEMS+=("$1")
}

# 清理函数
cleanup() {
    if [[ "$CLEANUP_DONE" == true ]]; then
        return
    fi
    CLEANUP_DONE=true

    local exit_code=$?
    echo "正在清理..."

    for item in "${CLEANUP_ITEMS[@]}"; do
        if [[ -d "$item" ]]; then
            rm -rf "$item" 2>/dev/null
        elif [[ -f "$item" ]]; then
            rm -f "$item" 2>/dev/null
        elif [[ -n "$item" ]]; then
            # 要运行的命令
            eval "$item" 2>/dev/null
        fi
    done

    return $exit_code
}

# 错误处理器
on_error() {
    local exit_code=$?
    local line_no=$1
    echo "第${line_no}行错误: 命令退出码为${exit_code}" >&2
    cleanup
    exit $exit_code
}

# 信号处理器
on_sigint() {
    echo -e "
被用户中断"
    cleanup
    exit 130
}

on_sigterm() {
    echo "已终止"
    cleanup
    exit 143
}

# 设置陷阱
trap cleanup EXIT
trap 'on_error ${LINENO}' ERR
trap on_sigint INT
trap on_sigterm TERM

# 用法示例
TEMP_DIR=$(mktemp -d)
register_cleanup "$TEMP_DIR"

TEMP_FILE=$(mktemp)
register_cleanup "$TEMP_FILE"

register_cleanup "docker stop mycontainer"

目标流程

  • shell脚本开发
  • 错误处理与用户反馈
  • 跨平台CLI兼容性