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

Bash脚本实现参数校验、帮助提示及命名参数传参功能

实现方案

直接替换原脚本内容为以下代码即可满足需求:

#!/bin/bash

# 输出帮助提示的公共函数
show_help() {
    echo "使用说明: $0 需要传入2个参数,分别为姓名(Name)、地址(address)"
    echo "支持命名参数传参,不受传入顺序限制,可用参数如下:"
    echo "  --name <姓名>    指定用户姓名"
    echo "  --address <地址> 指定居住地址"
    echo "  --help           查看当前帮助提示"
    echo "使用示例:"
    echo "  ./my_script.bash --address Delhi --name Gupta"
    echo "  输出结果: Mr./Ms. Gupta lives in Delhi ."
}

# 初始化参数存储变量
NAME=""
ADDRESS=""

# 【可选:兼容原位置参数传参】如果需要保留原来直接按顺序传两个值的写法,取消下面这段注释即可
# if [[ $# -eq 2 && ! "$1" =~ ^-- ]]; then
#     NAME="$1"
#     ADDRESS="$2"
#     shift 2
# fi

# 循环解析命名参数
while [[ $# -gt 0 ]]; do
    case "$1" in
        --help)
            show_help
            exit 0
            ;;
        --name)
            if [[ -z "$2" || "$2" =~ ^-- ]]; then
                echo "错误:--name参数后缺少传入的姓名值"
                show_help
                exit 1
            fi
            NAME="$2"
            shift 2
            ;;
        --address)
            if [[ -z "$2" || "$2" =~ ^-- ]]; then
                echo "错误:--address参数后缺少传入的地址值"
                show_help
                exit 1
            fi
            ADDRESS="$2"
            shift 2
            ;;
        *)
            echo "错误:不识别的参数 $1"
            show_help
            exit 1
            ;;
    esac
done

# 校验必填参数是否都已传入
if [[ -z "$NAME" || -z "$ADDRESS" ]]; then
    echo "错误:参数不全,必须同时传入姓名和地址两个参数"
    show_help
    exit 1
fi

# 原脚本输出逻辑
echo " Mr./Ms. $NAME lives in $ADDRESS ."

逻辑说明

  • 单独封装show_help函数统一管理帮助文案,无参数执行、参数缺失/错误、传入--help时都会调用该函数输出提示,避免重复代码。
  • 参数解析用while+case遍历所有传入参数,匹配到对应命名参数时就把后续的值存入对应变量,通过shift 2跳过已经处理的参数键和值,天然支持参数乱序传入。
  • 增加了参数值合法性校验:如果传了--name/--address但后面没跟对应的值(或者后面跟的是另一个--开头的参数),会直接报错提示。
  • 所有参数解析完成后做最终校验,只要姓名、地址任意一个值为空,就报错退出。
  • 预留了原位置参数传参的兼容代码,需要的话取消注释就能同时支持新旧两种传参方式。

测试验证

  • 执行./my_script.bash --help:正常输出帮助说明
  • 执行./my_script.bash:提示参数不全,输出帮助
  • 执行./my_script.bash --name Wang:提示参数不全,输出帮助
  • 执行./my_script.bash --address Guangzhou --name Wang:正常输出 Mr./Ms. Wang lives in Guangzhou .,顺序不影响结果
  • 执行./my_script.bash --phone 13xxxx:提示不识别的参数,输出帮助

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:33:35