From e28e4e51380886649c43a6d2a7fc7169a9c9317a Mon Sep 17 00:00:00 2001 From: wnlen <544241974@qq.com> Date: Sun, 18 Jan 2026 21:24:58 +0800 Subject: [PATCH] Update start.sh --- start.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/start.sh b/start.sh index 17c1f39..9338c9e 100644 --- a/start.sh +++ b/start.sh @@ -517,22 +517,25 @@ if [ "$SKIP_CONFIG_REBUILD" != "true" ]; then sed -i -E "s#(health-check:[[:space:]]*\n[[:space:]]*url:[[:space:]]*['\"])http://#\1https://#g" "$CONFIG_FILE" 2>/dev/null || true fi - # 5) 自检:失败则回退到旧配置 + # 5) 自检:失败则回退到旧配置(注意:脚本 set -e + trap ERR,必须 set +e 包裹) BIN="${Server_Dir}/bin/clash-linux-amd64" NEW_CFG="$CONFIG_FILE" OLD_CFG="${Conf_Dir}/config.yaml" + TEST_OUT="$Temp_Dir/config.test.out" if [ -x "$BIN" ] && [ -f "$NEW_CFG" ]; then - TEST_OUT="$Temp_Dir/config.test.out" - : > "$TEST_OUT" + : >"$TEST_OUT" + + set +e "$BIN" -t -f "$NEW_CFG" >"$TEST_OUT" 2>&1 test_rc=$? + set -e if [ $test_rc -ne 0 ]; then - echo "[ERROR] Generated config invalid, rc=$test_rc, reason (tail 200):" >&2 + echo "[ERROR] Generated config invalid, rc=$test_rc, reason(file=$TEST_OUT, size=$(wc -c <"$TEST_OUT" 2>/dev/null || echo 0))" >&2 tail -n 200 "$TEST_OUT" >&2 - echo "[ERROR] Generated config invalid, fallback to last good config: $OLD_CFG" >&2 + echo "[ERROR] fallback to last good config: $OLD_CFG" >&2 if [ -f "$OLD_CFG" ]; then cp -f "$OLD_CFG" "$NEW_CFG" else