Environment Variables Required Validation
Validate required environment variables upfront with parameter expansion guards, checking formats before any side effects.
Code
#!/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%%\?*}"
Report a problem with this exampleOpens a pre-filled issue on GitHub.