ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

Bash Heredoc

Пишете ли вы сценарий или просто любопытствуете, полезно знать, что команда прошла успешно. Лично мне больше всего нужна эта функция в сценариях bash. Когда вы пишете сценарий для серии команд и предыдущий результат влияет на последующие, лучше проверить, сработало ли оно.

В этой статье мы продемонстрируем несколько способов проверить, была ли ваша команда в bash успешной. Будут примеры сценариев, которые продемонстрируют его использование. Однако в зависимости от того, какую команду вы запускаете, для проверки может потребоваться разная тактика.

 

Проверка команды выполнена успешно

Всякий раз, когда команда запускается, возвращаемое значение команды сохраняется в определенной переменной в bash. В первом примере запустим диспетчер пакетов для обновления системы. В нашем случае это Ubuntu, поэтому команда будет примерно такой.

$ sudo apt update && sudo apt upgrade -y

Здесь, по выходным данным, мы можем легко сказать, что команда выполнена успешно. Теперь каждая команда, выполняемая в оболочке bash, возвращает значение, которое хранится в переменной bash «$?». Чтобы получить значение, запустите эту команду.

$ echo $?

Если команда выполнена успешно, возвращаемое значение будет 0. Если возвращаемое значение иное, значит, она не выполнилась должным образом. Давайте проверим это. Выполните ту же команду обновления, но на этот раз прервите ее, нажав «Ctrl + C».

 

Теперь проверьте значение переменной bash.

$ echo $?

Значение не равно 0, поэтому определенно есть ошибка. Здесь мы заставили команду прерваться. Как это может быть полезно в сценариях bash? Вот быстрый пример того, как использовать его в сценарии bash. Сохраните сценарий как текстовый файл с расширением .sh.

#!/bin/bash
<command>
if [ $? -eq 0 ]; then
echo OK
else
echo FAIL
fi

Сделайте файл исполняемым.

$ chmod +x demo.sh

Теперь запустим сценарий.

$ ./demo.sh

После выполнения любой команды bash обновит значение переменной. В этом случае после выполнения команды echo мы можем определить, успешно она выполнилась или нет. Замените команду echo чем угодно и вуаля!

Вот еще один интересный метод, который может подтвердить успешность выполнения команды. Это просто однострочная команда, которая очень проста.

$ <command> && echo SUCCESS || echo FAIL

Здесь команда разделена на две части символом «||». Если первая команда выполняется успешно, должна выполняться первая команда echo. В противном случае будет запущена вторая команда echo. Давайте проверим это на примере.

$ sudo apt update && echo SUCCESS || echo FAIL

Первая часть не удалась, поэтому первая команда echo была пропущена. Вместо этого была запущена вторая команда echo, указывающая на то, что первая часть не была выполнена успешно. Что, если все прошло успешно?

 

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

Вот еще один пример сценария bash.

#!/bin/bash
if <command>; then
echo “Success”
else
echo “Failure, exit status: $?”
fi

Запускаем скрипт.

$ ./demo.sh

Если команда не удалась, результат будет другим.

Какой сценарий bash использовать? Мы настоятельно рекомендуем первый, в котором сначала запускается команда, а затем значение «$?» извлекается в переменной, а затем выполняйте все, что хотите, в зависимости от значения переменной.

 

Последние мысли

Bash – это мощная оболочка с мощной функцией создания сценариев. Если вы хотите узнать, удалось ли выполнить ранее выполненную команду, это одни из самых надежных методов.

Какой метод использовать? Это зависит от того, какой цели вы хотите достичь. Для использования в терминале и в командной строке лучше всего использовать пример одной команды. Что касается сценариев bash, не стесняйтесь, какой метод лучше всего подходит вам, особенно первый пример сценария, который мы продемонстрировали.

Exit mobile version