From 347ab00bc85f1ede02648dc8a26241dd874c8d8b Mon Sep 17 00:00:00 2001 From: baichal Date: Thu, 25 Jun 2026 03:17:38 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=86=E6=9E=90=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E5=92=8C=E8=BD=AC=E5=8F=91=E5=8A=A0=E9=80=9F=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: traeagent --- socat.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/socat.sh b/socat.sh index 1780314..a6796d5 100644 --- a/socat.sh +++ b/socat.sh @@ -1510,7 +1510,8 @@ view_delete_forward() { proto_display=$(echo "$protocols_raw" | tr -d '[]"' | sed 's/,/ \/ /g' | tr 'a-z' 'A-Z') fi - entries+=("$ip_type $listen_port $remote_ip $remote_port $protocols_raw $extra_raw") + # 使用 | 分隔符存储,避免 extra 中空格导致解析错误 + entries+=("$ip_type|$listen_port|$remote_ip|$remote_port|$protocols_raw|$extra_raw") local local_ipv6="${ipv6:-未检测到}" case "$ip_type" in "ipv4") @@ -1562,7 +1563,8 @@ view_delete_forward() { proto_display=$(echo "$protocols_raw" | tr ' ' '/' | tr 'a-z' 'A-Z') fi - entries+=("$ip_type $listen_port $remote_ip $remote_port $protocols_raw $extra_raw") + # 使用 | 分隔符存储,避免 extra 中空格导致解析错误 + entries+=("$ip_type|$listen_port|$remote_ip|$remote_port|$protocols_raw|$extra_raw") local local_ipv6="${ipv6:-未检测到}" case "$ip_type" in "ipv4") @@ -1602,12 +1604,7 @@ view_delete_forward() { if [ $num -ge 1 ] && [ $num -lt $i ]; then local index=$((num-1)) local entry_str="${entries[$index]}" - local ip_type=$(echo "$entry_str" | awk '{print $1}') - local listen_port=$(echo "$entry_str" | awk '{print $2}') - local remote_ip=$(echo "$entry_str" | awk '{print $3}') - local remote_port=$(echo "$entry_str" | awk '{print $4}') - local protocols_raw=$(echo "$entry_str" | awk '{print $5}') - local extra_raw=$(echo "$entry_str" | awk '{print $6}') + IFS='|' read -r ip_type listen_port remote_ip remote_port protocols_raw extra_raw <<< "$entry_str" # 解析协议列表用于显示 local proto_display="TCP/UDP"