Environment Variables Required Validation

Validate required environment variables upfront with parameter expansion guards, checking formats before any side effects.

BashConfig Management

Code

snippet
#!/usr/bin/env bash
set -euo pipefail

# 必填变量在脚本最顶端集中校验
require_env() {
  local name="$1"
  local pattern="${2:-}"
  local value="${!name:-}"

  if [[ -z "${value}" ]]; then
    echo "Error: 必填环境变量 ${name} 未设置" >&2
    return 1
  fi
  if [[ -n "${pattern}" && ! "${value}" =~ ${pattern} ]]; then
    echo "Error: 环境变量 ${name} 格式非法: ${value}" >&2
    return 1
  fi
}

validate_all() {
  local failed=0
  require_env "DEPLOY_ENV" '^(staging|production)$' || failed=1
  require_env "DATABASE_URL" '^postgres://' || failed=1
  require_env "API_TOKEN" '.{20,}' || failed=1
  require_env "MAX_REPLICAS" '^[0-9]+$' || failed=1

  if (( failed )); then
    echo "Error: 环境校验失败,请在启动前修正上述变量" >&2
    exit 1
  fi
}

validate_all

readonly ENVIRONMENT="${DEPLOY_ENV}"
readonly REPLICAS="${MAX_REPLICAS}"

echo "配置校验通过:${ENVIRONMENT} 环境,副本数 ${REPLICAS}"
echo "数据库目标:${DATABASE_URL%%\?*}"