名称: 陷阱处理器生成器 描述: 为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兼容性