Как использовать команду Bash Exit

12 set 2022 2 min di lettura
Как использовать команду Bash Exit

Введение

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

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

Выход из состояния

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

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

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

date &> /dev/null
echo $?

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

0

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

ls /nonexisting_dir &> /dev/null
echo $?
2

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

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

sudo tcpdump -n -l | tee file.out
echo $?

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

Команда выхода в Bash

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

exit N

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

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

Примеры

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

if grep -q "search-string" filename then
 echo "String found."
 else
 echo "String not found."
 fi

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

cd /opt/code && mkdir project

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

#!/bin/bash

 echo "doing stuff..."

 exit
~/script.sh

Является ли использование только exit таким же, как exit $?.

Вот пример, показывающий, как завершить скрипт, если он вызывается пользователем без полномочий root:

#!/bin/bash

 if [[ "$(whoami)"!= root ]]; then
 echo "Only user root can run this script."
 exit 1
 fi

 echo "doing stuff..."

 exit 0

Если вы запустите скрипт от имени пользователя root, код выхода будет нулевым. В противном случае скрипт завершится с состоянием 1.

Вывод

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

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.