Как проверить статус выхода команды в Linux
При работе в системе Linux каждая команда, которую вы выполняете, возвращает код статуса (также называемый кодом выхода или кодом возврата), который сообщает вам, прошла ли команда успешно или завершилась с ошибкой.
Как пользователь Linux, особенно если вы изучаете сценарии оболочки или устраняете неполадки, знать, как проверить код выхода команды, очень важно.
В этой статье я объясню, что такое статус выхода, как его проверить и почему это важно.
Что такое статус выхода в Linux?
Каждый раз, когда вы выполняете команду в Linux, система тихо выдает ей отчет в конце, который представляет собой просто число, называемое кодом выхода (или кодом возврата).
- Если число равно
0, это означает, что команда была выполнена успешно, без ошибок. - Если число не
0, это означает, что команда не смогла выполниться каким-то образом.
Думайте об этом так:
- Все хорошо!
- Что-то пошло не так (общая ошибка)
2,127,126, и т.д.=Разные виды проблем, например, «файл не найден» или «команда не может быть выполнена».
Вы не всегда видите эти числа, напечатанные на экране, но Linux хранит их в специальной переменной, называемой $?. Вы можете проверить это в любое время, чтобы узнать, сработала ли ваша последняя команда или нет.
Совет: Эти коды выхода особенно важны, когда вы пишете скрипты на Bash, потому что они помогают вам принимать решения в зависимости от того, была ли команда успешной или неудачной.
Как проверить статус выхода команды
В Linux код возврата последней команды, которую вы выполнили, хранится в специальной оболочке переменной, называемой:
$?
Лучший способ понять код завершения — это на практике выполнять команды.
Пример 1: Успешная команда
ls echo $?
Что здесь происходит:
- Сначала
lsвыводит список файлов в вашей текущей директории. - Поскольку команда выполнена без каких-либо проблем, Linux устанавливает статус выхода на
0. - Когда мы немедленно проверяем статус с помощью
echo $?, он выводит0.
Код выхода 0 всегда означает успех. Таким образом, в этом случае команда ls сделала именно то, что мы ожидали.
Пример 2: Неудачная команда
ls /nonexistent echo $?
Что здесь происходит:
- Мы пытались перечислить файлы в каталоге под названием
/nonexistent. - Та директория не существует в системе, поэтому команда
lsзавершилась неудачей. - Затем Linux устанавливает код завершения на ненулевое число (в данном случае
2). - Когда мы проверяем с помощью
echo $?, мы видим:
Пример 3: Использование статуса выхода в скрипте
Коды выхода становятся действительно полезными, когда вы используете их внутри сценариев оболочки, потому что сценарии часто должны принимать решения в зависимости от того, успешно ли выполнена команда или она потерпела неудачу.
Давайте рассмотрим простой пример:
#!/bin/bash ls /etc > /dev/null if [ $? -eq 0 ]; then echo "Command successful!" else echo "Command failed!" fi
Что здесь происходит:
- Если команда
lsработает → выводит “Команда успешна!”. - Если оно не удается → выводит «Команда не выполнена!».
Чистый способ: Используя && и ||
Вместо того чтобы проверять $? каждый раз, вы можете связывать команды:
command && echo "Успех"→ выполняет вторую команду только если первая успешна.command || echo "Не удалось"→ выполняет вторую команду только если первая завершилась неудачей.
Пример:
ls /etc && echo "Found it!" || echo "Not found!"
Общие коды состояния завершения
Вот некоторые часто встречающиеся коды выхода:
| Код выхода | Значение |
|---|---|
| Успех | |
| 1 | Общая ошибка |
| 2 | Неправильное использование команд оболочки |
| 126 | Команда найдена, но не может быть выполнена |
| 127 | Команда не найдена |
| 130 | Скрипт завершен нажатием Ctrl+C |
| 255 | Статус выхода вне диапазона |
Заключительные мысли
Статус выхода — это небольшое число, но оно играет важную роль в интерактивном выполнении команд или написании оболочечных скриптов. Понимание кодов выхода помогает вам отлаживать проблемы и контролировать ваш рабочий процесс.
В следующий раз, когда команда не сработает как ожидалось, не ограничивайтесь только сообщением об ошибке, просто проверьте и статус выхода!



Добавить комментарий