From 209d7eb6e8e7e3232ce036d0161fe1743607947f Mon Sep 17 00:00:00 2001 From: Chaos Date: Thu, 2 Jul 2026 15:13:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20read=5Frequired=20?= =?UTF-8?q?=E5=87=BD=E6=95=B0=EF=BC=9A=E7=AE=A1=E9=81=93=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=E5=BF=85=E5=A1=AB=E5=8F=82=E6=95=B0=E5=BF=85=E9=A1=BB?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E6=8F=90?= =?UTF-8?q?=E4=BE=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 read_required(): 交互模式下反复提示直到输入非空值 - 管道模式下必填参数未环境变量提供时,报错并引导下载后交互执行 - FRPS_ADDR 改为必填,其余端口保持默认值 - 避免 curl | bash 静默跳过导致配置不完整 --- ai/hwaishell.sh | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) 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 (默认留空): " "")}"