Проектная лаборатория

Собственный Shell

0 / 76этапов пройдено

Этап 03 · Основные этапы

Реализация REPL

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы реализуете REPL (Read-Eval-Print Loop — цикл чтения, вычисления и вывода).

Цикл REPL

REPL (Read-Eval-Print Loop) — интерактивный цикл, составляющий основу оболочки. Он повторяет следующие шаги:

  1. Чтение: показать приглашение и дождаться ввода пользователя.
  2. Вычисление: разобрать и выполнить команду.
  3. Вывод: показать результат или сообщение об ошибке.
  4. Повторение: вернуться к шагу 1 и ждать следующую команду.

Этот цикл продолжается неограниченно, пока процесс оболочки не завершится.

Ваша оболочка должна следовать тому же циклу:

  1. Показать приглашение $ , затем дождаться строки ввода.
  2. Вывести <command_name>: command not found для любой введённой пользователем команды, как на предыдущих этапах.
  3. Вернуться к шагу 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 go

2. Откройте папку в IDE

cd ./my-shell

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage ff0

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста