🐛 Типичные ошибки

К оглавлению урока

⚡ Топ ошибок из ДЗ

  • ДЗ 18: непонимание $(ls ... | grep ...); пропуск ; в if; путаница if/fi и do/done
  • ДЗ 19: неправильный URL при клонировании; пропуск шагов при работе с feature; неправильное использование git commit --amend

Ошибки ДЗ 18: permission_checker.sh

Ошибка 1: непонимание подстановки команды

Конструкция $(ls -p /opt/ГРУППА | grep -v /) — это подстановка команды: результат выполнения команды помещается в переменную. Студенты часто не понимают, зачем нужны $().

# Неправильно (без подстановки — получим строку, а не список файлов):
FILE_LIST="ls -p /opt/YOURGROUP | grep -v /"

# Правильно:
FILE_LIST=$(ls -p /opt/YOURGROUP | grep -v /)

Ошибка 2: пропуск точки с запятой в if

В условии if [[ "$FILE" == *.sh ]] после ]] перед then нужна точка с запятой или перенос строки.

# Ошибка — пропущена ; перед then:
if [[ "$FILE" == *.sh ]] then

# Правильно (с ; или с переносом строки):
if [[ "$FILE" == *.sh ]]; then

Ошибка 3: незакрытый if или цикл

Каждый if закрывается fi; каждый for/while закрывается done. Забыть закрыть — синтаксическая ошибка.

# Правильная структура:
for FILE in $FILE_LIST
do
    if [[ "$FILE" == *.sh ]]; then
        chmod +x "$FILE"
    fi
done

Ошибка 4: пробелы между ключами и аргументами

В bash аргументы и ключи разделяются пробелами. Ошибка при слипании:

# Неправильно:
chmod+x "$FILE"

# Правильно:
chmod +x "$FILE"

Ошибки ДЗ 19: feature + amend + merge

Ошибка 1: неправильный URL репозитория

При клонировании часто путают HTTPS и SSH URL или допускают опечатки в имени пользователя/репозитория.

# HTTPS URL:
git clone https://github.com/USERNAME/homework12.git

# SSH URL (предпочтительнее после настройки ключей):
git clone git@github.com:USERNAME/homework12.git

Ошибка 2: неправильное имя файла .gitignore

Файл должен называться точно .gitignore (с точкой в начале, без расширения). Файл gitignore.txt или .gitignore.txt не будет работать.

Ошибка 3: нарушение последовательности при работе с feature

Типичная ошибка — забыть переключиться на ветку feature перед коммитом, или сделать изменения на main вместо feature.

# Сначала убедитесь, что вы на нужной ветке
git status  # покажет текущую ветку
git checkout feature  # или git switch feature

Ошибка 4: неправильное использование git commit --amend

После git commit --amend хэш коммита изменился. Простой git push на уже запушенную ветку завершится ошибкой. Нужен git push --force origin feature.

Помните: git push --force на ветку feature допустимо (это личная ветка, которую вы создали). Но git push --force на main — никогда, если с этой веткой работает команда!

Ошибка 5: забыть git add перед коммитом

После изменения файлов нужно их добавить в индекс (git add) перед коммитом. Без git add изменения не попадут в коммит.