Bash脚本模板生成器Skill bash-script-template

该技能用于自动生成遵循最佳实践的Bash脚本模板,包含错误处理、参数解析、日志记录和可移植性设计,适用于快速启动命令行工具开发,提升脚本的健壮性和可维护性。关键词:Bash脚本,Shell编程,命令行工具,脚本模板,自动化运维,DevOps,错误处理,参数解析。

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

name: bash-script-template description: 生成包含最佳实践的Bash脚本模板,包括错误处理、参数解析、日志记录和可移植性考虑。 allowed-tools: Read, Write, Edit, Bash, Glob, Grep

Bash脚本模板

生成包含最佳实践的Bash脚本模板。

能力

  • 生成健壮的Bash脚本模板
  • 设置正确的错误处理
  • 使用getopts实现参数解析
  • 创建日志记录工具
  • 配置严格模式设置
  • 生成可重用的函数库

使用场景

在以下情况下调用此技能:

  • 创建遵循最佳实践的新Bash脚本
  • 设置正确的错误处理模式
  • 实现参数解析
  • 创建可移植的Shell脚本

输入参数

参数 类型 是否必需 描述
scriptName 字符串 脚本名称
description 字符串 脚本描述
arguments 数组 脚本参数
functions 数组 要包含的函数

生成的模板

#!/usr/bin/env bash
#
# <scriptName> - <description>
#
# 用法: <scriptName> [选项] <参数>
#

set -euo pipefail
IFS=$'
\t'

# 脚本目录
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"

# 颜色(如果终端支持)
if [[ -t 1 ]]; then
    readonly RED='\033[0;31m'
    readonly GREEN='\033[0;32m'
    readonly YELLOW='\033[0;33m'
    readonly BLUE='\033[0;34m'
    readonly NC='\033[0m'
else
    readonly RED='' GREEN='' YELLOW='' BLUE='' NC=''
fi

# 日志记录函数
log_info() { echo -e "${BLUE}[信息]${NC} $*"; }
log_success() { echo -e "${GREEN}[成功]${NC} $*"; }
log_warn() { echo -e "${YELLOW}[警告]${NC} $*" >&2; }
log_error() { echo -e "${RED}[错误]${NC} $*" >&2; }
die() { log_error "$*"; exit 1; }

# 退出时清理
cleanup() {
    # 在此处添加清理任务
    :
}
trap cleanup EXIT

# 用法说明
usage() {
    cat <<EOF
用法: ${SCRIPT_NAME} [选项] <参数>

<description>

选项:
    -h, --help      显示此帮助信息
    -v, --verbose   启用详细输出
    -d, --dry-run   显示将执行的操作(模拟运行)
    -f, --force     强制操作
    -o, --output    输出文件路径

参数:
    argument        必需参数描述

示例:
    ${SCRIPT_NAME} -v input.txt
    ${SCRIPT_NAME} --output result.txt input.txt
EOF
}

# 解析参数
parse_args() {
    local OPTIND opt
    while getopts ":hvdfo:-:" opt; do
        case "${opt}" in
            h) usage; exit 0 ;;
            v) VERBOSE=true ;;
            d) DRY_RUN=true ;;
            f) FORCE=true ;;
            o) OUTPUT="${OPTARG}" ;;
            -)
                case "${OPTARG}" in
                    help) usage; exit 0 ;;
                    verbose) VERBOSE=true ;;
                    dry-run) DRY_RUN=true ;;
                    force) FORCE=true ;;
                    output=*) OUTPUT="${OPTARG#*=}" ;;
                    *) die "未知选项: --${OPTARG}" ;;
                esac
                ;;
            :) die "选项 -${OPTARG} 需要一个参数" ;;
            ?) die "未知选项: -${OPTARG}" ;;
        esac
    done
    shift $((OPTIND - 1))

    # 必需参数
    if [[ $# -lt 1 ]]; then
        usage
        die "缺少必需参数"
    fi

    ARGUMENT="$1"
}

# 默认值
VERBOSE=${VERBOSE:-false}
DRY_RUN=${DRY_RUN:-false}
FORCE=${FORCE:-false}
OUTPUT=${OUTPUT:-}

# 主函数
main() {
    parse_args "$@"

    if [[ "${VERBOSE}" == true ]]; then
        log_info "已启用详细模式"
    fi

    if [[ "${DRY_RUN}" == true ]]; then
        log_warn "模拟运行模式 - 不会进行任何更改"
    fi

    log_info "正在处理: ${ARGUMENT}"

    # 主要逻辑在此处

    log_success "完成!"
}

main "$@"

目标流程

  • shell脚本开发
  • 跨平台CLI兼容性
  • CLI应用程序引导