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

如何实现Bash脚本接收命令行参数指定环境并支持-h帮助选项

Bash脚本多参数与环境指定功能实现

核心实现逻辑

使用Bash内置的getopts工具处理命令行选项,替代原有的位置变量传参方式,天然支持多参数、选项校验、帮助提示等能力。

完整修改后脚本

#!/bin/bash

# 预定义环境与region的映射关系
LOWER=us-east-1
HIGHER=us-west-1

# 帮助信息输出函数
show_help() {
    echo "用法: ./test.sh [选项]"
    echo "选项说明:"
    echo "  -e <环境标识>  指定运行环境,可选值:LOWER(对应us-east-1)、HIGHER(对应us-west-1)"
    echo "  -h             打印帮助信息并退出"
}

# 初始化目标region变量
TARGET_REGION=""

# 解析命令行参数
while getopts "e:h" opt; do
  case "${opt}" in
    e)
      INPUT_ENV="${OPTARG}"
      # 匹配环境对应的region值
      case "${INPUT_ENV}" in
        LOWER) TARGET_REGION="${LOWER}" ;;
        HIGHER) TARGET_REGION="${HIGHER}" ;;
        *)
          echo "错误:不支持的环境标识 ${INPUT_ENV},仅支持LOWER/HIGHER" >&2
          exit 1
        ;;
      esac
    ;;
    h)
      show_help
      exit 0
    ;;
    \?)
      echo "错误:无效选项 -${OPTARG}" >&2
      show_help >&2
      exit 1
    ;;
    :)
      echo "错误:选项 -${OPTARG} 需要传入对应参数" >&2
      show_help >&2
      exit 1
    ;;
  esac
done

# 校验是否传入有效环境
if [ -z "${TARGET_REGION}" ]; then
  echo "错误:必须通过-e参数指定运行环境" >&2
  show_help >&2
  exit 1
fi

# 处理域名场景下无横线的region格式
DOMAIN_REGION="${TARGET_REGION//-/}"

# -------------------------- 原有核心业务代码 --------------------------
# 注意将硬编码的region替换为变量
username_json=$(aws xxxx xxxx xxxxxxx --query xxxx --output text --region "${TARGET_REGION}" )

json_token=$(curl -k \
  -H "Content-Type: application/json" \
  -X POST \
  -d \
'{
   "username":"'$username'",
   "password":"'$password'"
}' \
https://${DOMAIN_REGION}.xxxxxxx | jq '.token')

调用效果验证

  • 执行./test.sh -h:直接输出帮助说明后退出
  • 执行./test.sh -e LOWER:自动使用us-east-1作为region值运行所有命令
  • 执行./test.sh -e HIGHER:自动使用us-west-1作为region值运行所有命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:06:02