From 36152686318ae63c100e0533e24b7cce23274599 Mon Sep 17 00:00:00 2001 From: juewuy Date: Sat, 24 Oct 2026 13:28:08 +0800 Subject: [PATCH] =?UTF-8?q?~=E4=BF=AE=E5=A4=8D=E8=AE=A2=E9=98=85=E5=90=8D?= =?UTF-8?q?=E5=8C=85=E5=90=AB=E7=89=B9=E6=AE=8A=E7=AC=A6=E5=8F=B7=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/menus/6_core_config.sh | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/scripts/menus/6_core_config.sh b/scripts/menus/6_core_config.sh index 8be1b22f..e91e98ce 100644 --- a/scripts/menus/6_core_config.sh +++ b/scripts/menus/6_core_config.sh @@ -15,6 +15,19 @@ else fi URI_EXP='ss|vmess|vless|trojan|tuic|anytls|shadowtls|hysteria(2)?' +# 按变量名字面值删除订阅配置 +delete_provider() { + provider_name=$1 + provider_file=$2 + [ -f "$provider_file" ] || return 0 + provider_tmp="$provider_file.tmp.$$" + NAME="$provider_name" awk 'index($0, ENVIRON["NAME"] " ") != 1' "$provider_file" >"$provider_tmp" && + cat "$provider_tmp" >"$provider_file" + provider_status=$? + rm -f "$provider_tmp" + return "$provider_status" +} + # 配置文件主界面 set_core_config() { while true; do @@ -275,10 +288,10 @@ setproviders() { ;; d) if [ -n "$name" ] && [ -n "$link" ]; then - sed -i "/^$name /d" "$CRASHDIR"/configs/providers.cfg 2>/dev/null + delete_provider "$name" "$CRASHDIR"/configs/providers.cfg 2>/dev/null msg_alert "\033[32m$COMMON_SUCCESS\033[0m" elif [ -n "$name" ] && [ -n "$link_uri" ]; then - sed -i "/^$name /d" "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null + delete_provider "$name" "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null msg_alert "\033[32m$COMMON_SUCCESS\033[0m" fi break @@ -324,8 +337,8 @@ setproviders() { # 保存 saveproviders() { [ -n "$name" ] && { - [ -s "$CRASHDIR"/configs/providers.cfg ] && sed -i "/^$last_name /d" "$CRASHDIR"/configs/providers.cfg - [ -s "$CRASHDIR"/configs/providers_uri.cfg ] && sed -i "/^$last_name /d" "$CRASHDIR"/configs/providers_uri.cfg + [ -s "$CRASHDIR"/configs/providers.cfg ] && delete_provider "$last_name" "$CRASHDIR"/configs/providers.cfg + [ -s "$CRASHDIR"/configs/providers_uri.cfg ] && delete_provider "$last_name" "$CRASHDIR"/configs/providers_uri.cfg } if [ -n "$name" ] && [ -n "$link" ]; then echo "$name $link $interval $interval2 $ua #$exclude_w #$include_w" >>"$CRASHDIR"/configs/providers.cfg