🐛 Типичные ошибки — Занятие 26
⚡ Топ ошибок
- for без точки с запятой:
for i in {1..10}без;передdo→ синтаксическая ошибка - tail +2 vs tail -n +2:
tail +2работает как GNU-расширение, но переносимо:tail -n +2 - vi/nano: не выйти с сохранением — классическая ловушка
- PR в неверном направлении — base должен быть оригинальный репозиторий, compare — ваш форк
Ошибки из ДЗ 24 (sleeper.sh) — из источника
Ошибка 1: Синтаксические ошибки в for-цикле
Из источника: часто встречаются синтаксические ошибки при написании цикла for i in {1..10}.
Неправильно:
# Забыли точку с запятой перед do:
for i in {1..10}
do date +"%H:%M:%S" # это может сработать
done
# Но эта форма — синтаксическая ошибка:
for i in {1..10}; date +"%H:%M:%S"; done # нет do!
Правильно:
# Вариант 1: точка с запятой на той же строке
for i in {1..10}; do
date +"%H:%M:%S"
sleep 2
done
# Вариант 2: do на следующей строке
for i in {1..10}
do
date +"%H:%M:%S"
sleep 2
done
Ошибка 2: tail +2 — не пропускаем заголовок
Из источника: ps -ef | tail +2 | wc -l — не всегда очевидно, что tail +2 начинает вывод со 2-й строки (пропускает заголовок ps).
Что делает tail +2:
ps -ef | tail +2 | wc -l
# tail +2 = начать вывод со строки номер 2
# то есть ПРОПУСТИТЬ первую строку (заголовок)
# wc -l = посчитать строки = количество процессов
Переносимый вариант (рекомендован):
ps -ef | tail -n +2 | wc -l
# -n +2 — переносимый синтаксис для GNU/BSD систем
Ошибка 3: Синтаксис диапазона {50..100}
Из источника: не всегда очевидно, что можно начать с 50 и до 100.
Bash диапазоны:
for j in {50..100}; do # от 50 до 100 включительно (51 итерация)
touch "$j.txt"
done
for run in {a..z}; do # буквенный диапазон
echo $run
done
for i in {1..10..2}; do # с шагом 2: 1 3 5 7 9
echo $i
done
Ошибка 4: Выход из vi и nano
Из источника: «Использование текстовых редакторов — не всегда получается выйти с сохранением».
| Редактор | Действие | Команда |
|---|---|---|
vi / vim |
Сохранить и выйти | Esc → :wq → Enter |
vi / vim |
Выйти без сохранения | Esc → :q! → Enter |
vi / vim |
Режим вставки (редактирование) | Клавиша i |
nano |
Сохранить и выйти | Ctrl+X → Y → Enter |
nano |
Выйти без сохранения | Ctrl+X → N |
Ошибки из ДЗ 25 (PR в PyCharm)
Ошибка 5: PR в неверном направлении
Неправильно: base — ваш форк, compare — оригинальный репозиторий
Правильно:
Правильно:
- base repository:
it-career-hub/learning_git(оригинал), веткаmain - head repository: ваш форк, ветка
andrew-hw16
Ошибка 6: Commit без Push
Коммит существует только локально. PR на GitHub создать нельзя — GitHub не видит ваши локальные коммиты. После коммита обязательно выполните Push:
git push origin andrew-hw16 или нажмите «Push» в PyCharm.
Ошибка 7: Ветка создана, но PR из main
Задание требует PR из ветки
andrew-hw16, а не из main. При создании PR убедитесь, что в поле «compare» выбрана именно ваша ветка с HW16.
Ошибка 8: Отставание форка от upstream
Если форк создан давно, он может отставать от оригинала. Перед работой обновите:
git remote add upstream https://github.com/it-career-hub/learning_git.git
git fetch upstream
git checkout master
git merge upstream/master
git push origin master