Как проверить статус выхода команды в Linux

Как проверить статус выхода команды в 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 Статус выхода вне диапазона
Заключительные мысли

Статус выхода — это небольшое число, но оно играет важную роль в интерактивном выполнении команд или написании оболочечных скриптов. Понимание кодов выхода помогает вам отлаживать проблемы и контролировать ваш рабочий процесс.

В следующий раз, когда команда не сработает как ожидалось, не ограничивайтесь только сообщением об ошибке, просто проверьте и статус выхода!

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *