Как определить статус завершения скрипта или команды в Linux

Встроенные в bash переменные

Хотите писать навороченные сценарии и стать экспертом в написании скриптов оболочки? Тогда этот пост для вас ;)

В Linux/Unix когда вы запускаете скрипт или команду, они завершатся со значимым статусом для того чтобы вы поняли — достигли ли вы своей цели запуская их или нет. Тем самым мы можем предпринять какие-то действия по статусу завершения (выполнено, провалено или выполнено частично) этих команд. В linux есть некоторые команды, которые не отображают статус завершения, например команда «mount -a» которую мы выполняем после правки файла fstab не покажет вам ничего. Так как же мы узнаем что команда отработала и на сколько успешно? Для этого в Linux/Unix есть встроенная переменная которая хранит статус завершения для любой команды или запущенного скрипта. Этот статус хранится во встроенной переменно «$?». Статус завершения принимает значение от 0 до 255. Некоторые из обычно используемых статусов завершения приведены ниже.

0 Успешное выполнение команды

1 Команда завершилась неудачей во время расширения или перенаправления, статус завершения больше ноля.

2 Некорректное использование команды

126 Команда найдена, но не выполнена

127 Команда не найдена

Несколько примеров того, как использовать статусы завершения.

Как можно использовать статус завершения для проверки команды? Запустите команду которую хотите проверить, затем выполните команду

echo $?

  для проверки статус выполнения команды.

Пример 1:

mirivlad@mirivlad:~⟫ ls
New.doc
mirivlad@mirivlad:~⟫ echo $?
0

Если вы получили статус завершения равный нулю, то команды была выполнена успешно.

Как можно использовать статус завершения в сценариях оболочки?

Пример 2:

   ls -lrt

    if [ $? -eq 0 ]

    then

    echo "команда ls -lrt выполнена успешно"

    else

    echo "команда ls -lrt не выполнена правильно, и статус завершения : $?"

    fi

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Блог админа