Доработка. Добавлен скрипт для проверки неуместного использования двойных кавычек
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