Thank you for reading this post, don't forget to subscribe!
Проверка команды выполнена успешно
Всякий раз, когда команда запускается, возвращаемое значение команды сохраняется в определенной переменной в bash. В первом примере запустим диспетчер пакетов для обновления системы. В нашем случае это Ubuntu, поэтому команда будет примерно такой.
1 |
$ sudo apt update && sudo apt upgrade -y |
Здесь, по выходным данным, мы можем легко сказать, что команда выполнена успешно. Теперь каждая команда, выполняемая в оболочке bash, возвращает значение, которое хранится в переменной bash «$?». Чтобы получить значение, запустите эту команду.
1 |
$ echo $? |
Если команда выполнена успешно, возвращаемое значение будет 0. Если возвращаемое значение иное, значит, она не выполнилась должным образом. Давайте проверим это. Выполните ту же команду обновления, но на этот раз прервите ее, нажав «Ctrl + C».
Теперь проверьте значение переменной bash.
1 |
$ echo $? |
Значение не равно 0, поэтому определенно есть ошибка. Здесь мы заставили команду прерваться. Как это может быть полезно в сценариях bash? Вот быстрый пример того, как использовать его в сценарии bash. Сохраните сценарий как текстовый файл с расширением .sh.
1 2 3 4 5 6 7 |
#!/bin/bash <command> if [ $? -eq 0 ]; then echo OK else echo FAIL fi |
Сделайте файл исполняемым.
1 |
$ chmod +x demo.sh |
Теперь запустим сценарий.
1 |
$ ./demo.sh |
После выполнения любой команды bash обновит значение переменной. В этом случае после выполнения команды echo мы можем определить, успешно она выполнилась или нет. Замените команду echo чем угодно и вуаля!
Вот еще один интересный метод, который может подтвердить успешность выполнения команды. Это просто однострочная команда, которая очень проста.
1 |
$ <command> && echo SUCCESS || echo FAIL |
Здесь команда разделена на две части символом «||». Если первая команда выполняется успешно, должна выполняться первая команда echo. В противном случае будет запущена вторая команда echo. Давайте проверим это на примере.
1 |
$ sudo apt update && echo SUCCESS || echo FAIL |
Первая часть не удалась, поэтому первая команда echo была пропущена. Вместо этого была запущена вторая команда echo, указывающая на то, что первая часть не была выполнена успешно. Что, если все прошло успешно?
Была активирована первая команда echo.
Вот еще один пример сценария bash.
1 2 3 4 5 6 |
#!/bin/bash if <command>; then echo “Success” else echo “Failure, exit status: $?” fi |
Запускаем скрипт.
1 |
$ ./demo.sh |
Если команда не удалась, результат будет другим.
Какой сценарий bash использовать? Мы настоятельно рекомендуем первый, в котором сначала запускается команда, а затем значение «$?» извлекается в переменной, а затем выполняйте все, что хотите, в зависимости от значения переменной.