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

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

Введение

Часто при написании сценариев 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 используется для выхода из оболочки с определенным состоянием.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

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.