diff --git a/jsite.sh b/jsite.sh index b825785..401947b 100644 --- a/jsite.sh +++ b/jsite.sh @@ -546,13 +546,20 @@ save_port_assignment() { echo "{\"$site_name\": $port}" > "$port_file" fi else - # 如果没有jq,使用简单的文本处理 + # 如果没有jq,使用更安全的文本处理方式 if [ -f "$port_file" ]; then - # 移除已存在的条目(如果存在) - grep -v "\"$site_name\"" "$port_file" > "${port_file}.tmp" 2>/dev/null || true - mv "${port_file}.tmp" "$port_file" - # 在最后一个大括号前添加新条目 - sed -i "s/}$/ \"$site_name\": $port\n}/" "$port_file" 2>/dev/null || echo "{\"$site_name\": $port}" > "$port_file" + # 提取现有条目并重新构建 + local existing_entries=$(grep -o '"[^"]*"[[:space:]]*:[[:space:]]*[0-9]*' "$port_file" 2>/dev/null | grep -v "\"$site_name\"" || echo "") + + # 重新构建JSON文件 + echo "{" > "$port_file" + if [ -n "$existing_entries" ]; then + echo "$existing_entries" | sed 's/$/,/' | head -n -1 >> "$port_file" + echo "$existing_entries" | tail -n 1 >> "$port_file" + echo "," >> "$port_file" + fi + echo " \"$site_name\": $port" >> "$port_file" + echo "}" >> "$port_file" else # 创建新文件 echo "{\"$site_name\": $port}" > "$port_file" @@ -1430,13 +1437,7 @@ create_site() { # 删除网站 delete_site() { - log_info "即将删除网站: $SITE_NAME" - read -p "确认删除?(y/N): " confirm - - if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then - log_info "取消删除操作" - return 0 - fi + log_info "开始删除网站: $SITE_NAME" # 停止PM2进程 local status=$(get_site_status "$SITE_NAME")