Доработка. Добавлен скрипт для проверки неуместного использования двойных кавычек
This commit is contained in:
72
check.sh
Normal file
72
check.sh
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user