Какое значение в операторе exit говорит об успешном выполнении программы

Содержание

Bash exit code — код, которым завершается выполнение скрипта. В случае успешного выполнения это 0, если произошли какие-то ошибки код отличается.

Этот код можно считывать и планировать логику в зависимости от него.

BASH exit code

Самое частое применение — скрипты, для которых нужно предусмотреть возможность прерывания и различные сценарии выполнения.

Например, с помощью bash exit code можно обработать исключение при закончившемся пространстве на диске при размещении на нем резервной копии данных. Или при автоматизированном переносе сайта с одного сервера на другой.

Большая часть программ возвращают 0 при успешном выполнении и коды отличные от нуля при возникновении ошибок.

Это 1 или другой код. Для каждой утилиты, которая фактически используется в скрипте и выполнение процесса запущенного с помощью которой завершается, имеет свои коды выхода. Все они описаны в документации.

На скриншоте приведен фрагмент из man grep относящийся к кодам выхода.

Bash exit codes & command chaining | #1 Practical Bash

bash exim code

Подобную информацию можно найти по любому инструменту.

Часто используемая утилита awk всегда будет возвращать 0

Exit code может принимать значения от 0 до 256.

Вывести код выполнения последней команды в оболочке или в скрипте можно так:

Это основной способ отладки любых bash скриптов. Можно выполнить скрипт целиком или его часть и проверить код вывода выстраивая процесс далее в зависимости от результата.

Для демонстрации будем использовать HTML файл со случайным текстом.

Проверим равняется ли возвращаемое значение единице

grep ‘looky-for’ site.html ; if (( `echo $?` == 1 )); then echo ONE; fi

Код выхода говорит о том, что паттерн не найден в файле.

Читайте также:
Для чего программа supersu для Андроид

bash exit code можно просто выводить в консоль отдельно.

При обнаруженном совпадении:

looki-for 0

Если совпадения нет:

Если произошла ошибка — например отсутствует файл в котором утилите grep дано указание искать

grep: site2.html: No such file or directory 2

Код выхода при написании скриптов

При написании скриптов стоит учитывать, что в приведенном выше примере речь идет об одной команде.

Если это несколько команд, выполняющиеся одна за другой ошибку можно пропустить проверяя exit code одной из них.

grep ‘looki-for’ site2.html ; echo $? ; echo ‘hey’; echo $?

grep: site2.html: No such file or directory
2
hey

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

Также можно использовать конструкцию set -e/trap:

set -e some bash code trap what to do if errors detected

За счет нее также можно предусмотреть действие выполняемое в случае если bash скрипт возвращает exit code, который говорит о неуспешном выполнении.

Таким действием обычно является запись информации в лог, отправка уведомления администратору или удаление временных файлов.

23 [Джун] Оператор guard

Источник: server-gu.ru

Команды Exit и коды выхода в Bash

Bash Heredoc

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

В этой статье мы рассмотрим встроенную команду exit в Bash и статусы выхода выполненных команд.

Статус выхода

Каждая команда оболочки возвращает код завершения, когда она завершается, либо успешно, либо безуспешно.

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

Специальная переменная $? возвращает состояние выхода последней выполненной команды:

date /dev/nullecho $?

Команда date выполнена успешно, и код выхода равен нулю:

Если вы попытаетесь запустить команду ls с несуществующим каталогом, код выхода будет ненулевым:

ls /nonexisting_dir /dev/nullecho $?

Код состояния можно использовать для выяснения причины сбоя команды. Страница руководства каждой команды содержит информацию о кодах выхода.

При выполнении многокомпонентного конвейера состояние выхода конвейера соответствует статусу последней команды:

sudo tcpdump -n -l | tee file.outecho $?

В приведенном выше примере echo $? будет напечатан код выхода команды tee.

Команда exit в Bash

Команда exit выходит из оболочки со статусом N. Он имеет следующий синтаксис:

exit N

Если N не указан, код состояния выхода соответствует коду последней выполненной команды.

Читайте также:
Как удалить программу с андроида с рут правами

При использовании в сценариях оболочки значение, указанное в качестве аргумента команды exit, возвращается в оболочку в качестве кода завершения.

Примеры

Статус выхода команд можно использовать в условных командах, таких как if. В следующем примере grepвыйдет с нуля (что означает true в сценариях оболочки), если «search-string» находится в filename:

if grep -q «search-string» filename then echo «Строка найдена.» else echo «Строка не найдена.» fi

При запуске списка команд, разделенных (and) или ||(or), состояние выхода команды определяет, будет ли выполнена следующая команда в списке. Здесь команда mkdir будет выполнена только если cd вернет ноль:

cd /opt/code mkdir project

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

#!/bin/bash echo «doing stuff. » exit

Источник: andreyex.ru

Bash получить код завершения команды в Linux / Unix

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

Как получить код вывода или статус команды оболочки Linux или Unix и сохранить его в переменной оболочки?

Введение. Каждая команда оболочки Linux или Unix возвращает состояние, когда она завершается нормально или ненормально.

Например, если скрипт backup.sh не выполнен, и он возвращает код, который сообщает скрипту оболочки отправить электронное письмо админу.

Что такое код вывода в оболочке bash?

Каждая команда Linux или Unix, выполняемая скриптом оболочки или пользователем, имеет статус вывода.

Статус вывода – это целое число.

0 состояние выхода означает, что команда была успешной без каких-либо ошибок.

Ненулевое (1-255 значений) состояние выхода означает, что команда была неудачной.

Как узнать код вывода команды

Вам нужно использовать определенную переменную оболочки с именем $? чтобы получить статус вывода из ранее выполненной команды.

Выведем $? переменной используя команду echo или команду printf:

date echo $? 0 date-foo-bar printf ‘%dn’ $? 127

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

Кроме того, код вывода – 127 (не ноль), так как команда nonexistant не была успешной.

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

Итак, как вы сохранить статус вывода команды в переменной оболочки?

Просто назначьте $? в переменную оболочки. Синтаксис:

command status=$? ## run date command ## cmd=»date» $cmd ## get status ## status=$? ## take some decision ## [ $status -eq 0 ] echo «$cmd command was successful» || echo «$cmd failed»

Читайте также:
Когда программа спокойной ночи малыши

Как мне установить код вывода для моих собственных скриптов оболочки?

Команда exit вызывает обычное завершение скриптов оболочки.

Вывод из оболочки со статусом N. Синтаксис:

exit N exit 1 exit 999
#!/bin/bash /path/to/some/command [ $? -eq 0 ] || exit 1

Пример скрипта оболочки для получения кода завершения команды

#!/bin/bash # # Sample shell script to demo exit code usage # # set -e ## find ip in the file ## grep -q 192.168.2.254 /etc/resolv.conf ## Did we found IP address? Use exit status of the grep command ## if [ $? -eq 0 ] then echo «Success: I found IP address in file.» exit 0 else echo «Failure: I did not found IP address in file.

Script failed» >#128220; Чтение файла построчно на Bash

В чем разница между IMAP и POP3

✔️ Как управлять контейнерами LXD от имени обычного.

Руководство для начинающих по созданию первого пакета.

Феноменальная популярность электроники Xiaomi: основные причины

Получение вчерашней даты в Bash: Практическое руководство

Использование специальных гелей при мышечных болях

Сравнение команд Printf и Echo на Linux

Как расширить/увеличить файловую систему VxFS на Linux

Услуги по размещению серверного оборудования в ЦОД

Leave a Comment Cancel Reply

• Свежие записи

  • Как удалить удаленный Git
  • Как улучшить работу с Windows 11 (решение проблем ОС)
  • Как подготовить ноутбук перед продажей и кому его продать?
  • Чтение файла построчно на Bash
  • Как правильно оформить ипотеку на вторичное жильё?
  • В чем разница между IMAP и POP3
  • ✔️ Как управлять контейнерами LXD от имени обычного пользователя
  • Руководство для начинающих по созданию первого пакета Debian
  • Феноменальная популярность электроники Xiaomi: основные причины
  • Лаки Джет онлайн игра.

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…

Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…

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

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

Протоколы, используемые для получения электронной почты, являются важной частью функционирования Интернета, и все же они остаются практически незаметными для большинства пользователей. Два наиболее…

Источник: itisgood.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru