You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Bash脚本添加带参数的create/delete动作子命令

在Bash脚本中添加create/delete子命令的实现方案

核心逻辑

先提取第一个参数作为子命令,判断其合法性后,针对不同子命令单独处理后续的--name/--id等选项,既兼容原有选项处理逻辑,又实现子命令的分支控制。

完整示例脚本

#!/bin/bash

# 检查是否传入子命令
if [ $# -eq 0 ]; then
    echo "错误:必须指定子命令(create/delete)"
    echo "用法示例:"
    echo "  $0 create --name foo --id 1234"
    echo "  $0 delete --id 1234"
    exit 1
fi

# 捕获子命令并移除该参数,剩余参数用于选项处理
ACTION="$1"
shift

# 初始化参数变量
NAME=""
ID=""

# 按子命令分支处理选项
case "$ACTION" in
    create)
        # 处理create子命令的选项
        while [[ $# -gt 0 ]]; do
            case "$1" in
                --name)
                    NAME="$2"
                    shift 2
                    ;;
                --id)
                    ID="$2"
                    shift 2
                    ;;
                *)
                    echo "错误:create子命令不支持选项 $1"
                    exit 1
                    ;;
            esac
        done
        # 校验create的必填参数
        if [[ -z "$NAME" || -z "$ID" ]]; then
            echo "错误:create子命令需同时指定--name和--id"
            exit 1
        fi
        echo "执行create操作:名称=$NAME,ID=$ID"
        # 此处添加create的实际业务逻辑
        ;;
    delete)
        # 处理delete子命令的选项
        while [[ $# -gt 0 ]]; do
            case "$1" in
                --id)
                    ID="$2"
                    shift 2
                    ;;
                *)
                    echo "错误:delete子命令不支持选项 $1"
                    exit 1
                    ;;
            esac
        done
        # 校验delete的必填参数
        if [[ -z "$ID" ]]; then
            echo "错误:delete子命令必须指定--id"
            exit 1
        fi
        echo "执行delete操作:ID=$ID"
        # 此处添加delete的实际业务逻辑
        ;;
    *)
        echo "错误:未知子命令 $ACTION,支持的子命令为create/delete"
        exit 1
        ;;
esac

关键细节说明

  • 子命令捕获:通过$1获取第一个参数作为动作,再用shift将其从参数列表中移除,后续即可专注处理当前子命令对应的选项。
  • 分支选项处理:每个子命令的case分支内,单独定义支持的选项和参数规则,比如create需要双参数、delete仅需ID。
  • 参数校验:在每个子命令的选项处理完成后,检查必填参数是否齐全,避免非法调用导致的逻辑错误。

测试命令

./run.sh create --name foo --id 1234
./run.sh delete --id 1234

内容的提问来源于stack exchange,提问作者Ufder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:45:51