getopts解析器生成器Skill getopts-parser-generator

这是一个用于为Shell脚本自动生成参数解析代码的工具。它支持短选项和长选项,能够验证参数值,生成帮助文本和使用文档,并处理必需参数。适用于Shell脚本开发、命令行工具构建和自动化脚本编写。关键词:Shell脚本,参数解析,getopts,命令行工具,自动化脚本,Bash编程,选项验证,帮助生成

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

名称:getopts解析器生成器 描述:为shell脚本生成基于getopts的参数解析,支持短/长选项和验证。 允许工具:读取、写入、编辑、Bash、Glob、Grep

Getopts解析器生成器

为shell脚本生成基于getopts的参数解析。

功能

  • 生成getopts解析代码
  • 支持短选项和长选项
  • 实现选项验证
  • 创建帮助文本生成
  • 处理必需参数
  • 生成使用文档

使用场景

在以下情况调用此技能:

  • 为shell脚本添加参数解析
  • 支持短选项和长选项
  • 验证参数值
  • 生成帮助文本

生成模式

带长选项的Getopts

#!/usr/bin/env bash

# 默认值
VERBOSE=false
OUTPUT=""
FORMAT="text"
FORCE=false

# 使用说明函数
usage() {
    cat <<EOF
用法:$(basename "$0") [选项] <输入文件>

选项:
    -h, --help              显示此帮助
    -v, --verbose           启用详细输出
    -o, --output 文件       输出文件(默认:标准输出)
    -f, --format 格式       输出格式:text、json、csv(默认:text)
    -F, --force             强制覆盖现有文件

参数:
    输入文件                要处理的输入文件
EOF
}

# 解析选项
parse_options() {
    # 将长选项转换为短选项
    for arg in "$@"; do
        shift
        case "$arg" in
            '--help')    set -- "$@" '-h' ;;
            '--verbose') set -- "$@" '-v' ;;
            '--output')  set -- "$@" '-o' ;;
            '--format')  set -- "$@" '-f' ;;
            '--force')   set -- "$@" '-F' ;;
            *)           set -- "$@" "$arg" ;;
        esac
    done

    # 解析短选项
    local OPTIND opt
    while getopts ":hvo:f:F" opt; do
        case "$opt" in
            h) usage; exit 0 ;;
            v) VERBOSE=true ;;
            o) OUTPUT="$OPTARG" ;;
            f)
                case "$OPTARG" in
                    text|json|csv) FORMAT="$OPTARG" ;;
                    *) die "无效格式:$OPTARG" ;;
                esac
                ;;
            F) FORCE=true ;;
            :) die "选项 -$OPTARG 需要一个参数" ;;
            \?) die "未知选项:-$OPTARG" ;;
        esac
    done

    shift $((OPTIND - 1))

    # 剩余参数
    if [[ $# -lt 1 ]]; then
        usage
        die "缺少必需参数:输入文件"
    fi

    INPUT="$1"
    shift

    # 额外参数
    EXTRA_ARGS=("$@")
}

die() {
    echo "错误:$*" >&2
    exit 1
}

# 解析并验证
parse_options "$@"

# 验证
[[ -f "$INPUT" ]] || die "未找到输入文件:$INPUT"
[[ -n "$OUTPUT" && -f "$OUTPUT" && "$FORCE" != true ]] && \
    die "输出文件已存在:$OUTPUT(使用 --force 强制覆盖)"

目标流程

  • shell脚本开发
  • shell补全脚本
  • 参数解析器设置