diff --git a/ai/hwaishell.sh b/ai/hwaishell.sh index 5e8ec5a..f9da6e9 100644 --- a/ai/hwaishell.sh +++ b/ai/hwaishell.sh @@ -13,7 +13,35 @@ log_warn() { echo -e "${YELLOW}[WARN]${PLAIN} $1"; } log_error() { echo -e "${RED}[ERROR]${PLAIN} $1"; } log_step() { echo -e "\n${BLUE}[${1}]${PLAIN} ${2}"; } -# 交互式读取或自动使用默认值(管道模式下静默使用默认值) +# 交互式读取,必须提供非空值;管道模式下要求环境变量 +read_required() { + local prompt_msg="$1" + local var_name="$2" + + if [ -t 0 ]; then + local val + while true; do + read -p "$prompt_msg" val + if [ -n "$val" ]; then + echo "$val" + return 0 + fi + echo -e "${RED}此项为必填,请输入!${PLAIN}" + done + else + # 管道模式:从环境变量取,没有则报错提示改为交互式执行 + local env_val="${!var_name}" + if [ -n "$env_val" ]; then + echo "$env_val" + else + log_error "管道模式下参数 $var_name 未通过环境变量提供" + log_error "请改为交互式执行: curl -sSL -o hwaishell.sh && bash hwaishell.sh" + exit 1 + fi + fi +} + +# 交互式读取,有默认值可选 read_or_default() { local prompt_msg="$1" local default_value="$2" @@ -217,8 +245,8 @@ fi # ================= 配置网关与 frpc 代理参数 ================= log_step "2/5" "配置 frpc 连接与网关端口参数:" -# frps 服务器连接信息 -FRPS_ADDR="${FRPS_ADDR:-$(read_or_default "请输入 frps 服务器地址 (例: 1.2.3.4): " "")}" +# frps 服务器连接信息(必填) +FRPS_ADDR="${FRPS_ADDR:-$(read_required "请输入 frps 服务器地址 (例: 1.2.3.4): " "FRPS_ADDR")}" FRPS_PORT="${FRPS_PORT:-$(read_or_default "请输入 frps 服务器端口 (默认 7000): " "7000")}" FRPS_TOKEN="${FRPS_TOKEN:-$(read_or_default "请输入 frps 认证 token (默认留空): " "")}"