From dd6393753cb0c114204e2cafa728e8dba7cbf581 Mon Sep 17 00:00:00 2001 From: sasha80 Date: Wed, 21 Jan 2026 09:34:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B5=D1=83=D0=BC=D0=B5=D1=81=D1=82=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=B2=D0=BE=D0=B9=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BA=D0=B0=D0=B2=D1=8B=D1=87=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- check.sh | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 check.sh diff --git a/check.sh b/check.sh new file mode 100644 index 00000000..2f104301 --- /dev/null +++ b/check.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash + +if [ -z "$1" ]; then + echo "Использование: $0 <папка_для_поиска>" + exit 1 +fi + +TARGET_DIR="$1" + +if [ ! -d "$TARGET_DIR" ]; then + echo "Ошибка: папка '$TARGET_DIR' не существует!" + exit 1 +fi + +echo "Поиск строк в двойных кавычках в файлах .gd (исключая комментарии)..." +echo "Папка: $TARGET_DIR" +echo "==========================================" + +FOUND_MATCHES=0 + +# Используем Process Substitution вместо пайплайна в цикле +while IFS= read -r file; do + # Используем awk для поиска строк с кавычками, исключая комментарии + # и экранированные кавычки + MATCHES=$(awk ' + BEGIN { line_num = 0 } + { + line_num++ + original_line = $0 + line = $0 + + # Ищем первый #, который не находится внутри кавычек + in_quote = 0 + for (i = 1; i <= length(line); i++) { + char = substr(line, i, 1) + prev_char = substr(line, i-1, 1) + + # Если находим неэкранированную кавычку, меняем состояние + if (char == "\"" && prev_char != "\\") { + in_quote = !in_quote + } + + # Если находим # вне кавычек, обрезаем строку до этого места + if (char == "#" && !in_quote) { + line = substr(line, 1, i-1) + break + } + } + + # Удаляем начальные и конечные пробелы + gsub(/^[[:space:]]+|[[:space:]]+$/, "", line) + + # Ищем непустые строки с двойными кавычками + if (line ~ /"[^"\\]*"/) { + print line_num ": " original_line + } + } + ' "$file") + + if [ -n "$MATCHES" ]; then + FOUND_MATCHES=1 + echo "Файл: $file" + echo "$MATCHES" | while IFS= read -r match_line; do + echo " Строка $match_line" + done + echo "" + fi +done < <(find "$TARGET_DIR" -type f -name "*.gd") + +if [ "$FOUND_MATCHES" -eq 0 ]; then + echo "Совпадений не найдено." +fi