Linux Labs

Bash: обработка текста и скрипты / Ступень 7 из 9

Код завершения и healthcheck

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 8 · на машине · 6 мин

Код завершения

Каждая команда, завершаясь, сообщает число — по нему видно, удалась ли она.

Это число — код завершения, тот же, что скрипт задаёт командой exit N. Ноль значит успех, любое число от 1 до 255 — сбой, а номер показывает причину. Номера у каждой программы свои: у curl 6 — имя сервера не нашлось, 7 — не удалось подключиться, 28 — истекло время ожидания. На экран код не попадает, его хранит оболочка.

Код последней команды лежит в переменной $?, и его печатают через echo. Так ты увидишь, чем закончился запрос curl к приложению, которое лежит.

Упражнение · посмотреть

Посмотри код curl

В ~/health-lab выполни две команды: запрос к приложению с печатью кода curl, а потом ещё раз печать $?.

Сначала предположи

Первая команда напечатает код curl. Что напечатает вторая?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа

$? хранит код одной команды — последней. Любая следующая команда, даже echo, кладёт туда свой код. Поэтому $? читают сразу после нужной команды: строкой ниже там уже код другой.

В healthcheck.sh между curl и условием стоит echo "checked at …". Условие if [ $? -eq 0 ] получило код этого echo — ноль, — и скрипт напечатал OK.

Ubuntu 24.04
Загрузка…