Проектная лаборатория
Собственный Shell
Этап 03 · Основные этапы
Реализация REPL
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы реализуете REPL (Read-Eval-Print Loop — цикл чтения, вычисления и вывода).
Цикл REPL
REPL (Read-Eval-Print Loop) — интерактивный цикл, составляющий основу оболочки. Он повторяет следующие шаги:
- Чтение: показать приглашение и дождаться ввода пользователя.
- Вычисление: разобрать и выполнить команду.
- Вывод: показать результат или сообщение об ошибке.
- Повторение: вернуться к шагу
1и ждать следующую команду.
Этот цикл продолжается неограниченно, пока процесс оболочки не завершится.
Ваша оболочка должна следовать тому же циклу:
- Показать приглашение
$, затем дождаться строки ввода. - Вывести
<command_name>: command not foundдля любой введённой пользователем команды, как на предыдущих этапах. - Вернуться к шагу
1.
Например, если пользователь вводит hello, оболочка должна вывести hello: command not found, а затем снова показать приглашение ($ ).
Проверки
Тестирующая система запустит вашу программу следующим образом:
./your_program.shЗатем система отправит оболочке последовательность команд:
$ invalid_command_1
invalid_command_1: command not found
$ invalid_command_2
invalid_command_2: command not found
$ invalid_command_3
invalid_command_3: command not found
$После каждой команды тестирующая система проверит, что оболочка:
- Выводит сообщение
<command_name>: command not found. - Показывает новое приглашение (
$), прежде чем система отправит следующую команду.
Примечания
- Точное количество отправленных команд и их имена будут случайными.
- Цикл должен работать неограниченно. Тестирующая система завершит вашу программу после окончания проверки.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init shell ./my-shell --language go2. Откройте папку в IDE
cd ./my-shellРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage ff0Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.