П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4019 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6656 раз(а).

Учебник HTML.
Просмотров 3646 раз(а).

Руководство по PHP5.
Просмотров 5923 раз(а).

Хостинг через призму DNS.
Просмотров 4707 раз(а).

Подборка текстов стандартных документов.
Просмотров 56174 раз(а).

Учебник PHP - Самоучитель
Просмотров 3603 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8049 раз(а).

Внешние атаки...
Просмотров 4431 раз(а).

Учебник PHP.
Просмотров 3119 раз(а).

SSI в примерах.
Просмотров 137 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 6. Завершение и код завершения

Ё

...эта часть Bourne shell покрыта мраком, тем не менее все пользуются ею.

Ё Chet Ramey

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

Каждая команда возвращает код завершения (иногда код завершения называют возвращаемым значением ). В случае успеха команда должна возвращать 0, а в случае ошибки -- ненулевое значение, которое, как правило, интерпретируется как код ошибки. Практически все команды и утилиты Unix возвращают 0 в случае успешного завершения, но имеются и исключения из правил.

Аналогичным образом ведут себя функции, расположенные внутри сценария, и сам сценарий, возвращая код завершения. Код, возвращаемый функцией или сценарием, определяется кодом возврата последней команды. Команде exit можно явно указать код возврата, в виде: exit nnn, где nnn -- это код возврата (число в диапазоне 0 - 255).

Note

Когда работа сценария завершается командой exit без параметров, то код возврата сценария определяется кодом завершения последней исполненной команды (не считая саму команду exit).

#!/bin/bash

COMMAND_1

...

# Сценарий вернет код завершения последней команды.
COMMAND_LAST

exit


Эквивалентный вариант -- exit $? или можно вообще опустить команду exit.

#!/bin/bash

COMMAND_1

...

# Сценарий вернет код завершения последней команды.
COMMAND_LAST

exit $?


#!/bin/bash

COMMAND1

...

# Сценарий вернет код завершения последней команды.
COMMAND_LAST


Код возврата последней команды хранится в специальной переменной $?. После исполнения кода функции, переменная $? хранит код завершения последней команды, исполненной в функции. Таким способом в Bash передается "значение, возвращаемое" функцией. После завершения работы сценария, код возврата можно получить, обратившись из командной строки к переменной $?, т.е. это будет код возврата последней команды, исполненной в сценарии.

Пример 6-1. завершение / код завершения

#!/bin/bash

echo hello
echo $?    # код возврата = 0, поскольку команда выполнилась успешно.

lskdf      # Несуществующая команда.
echo $?    # Ненулевой код возврата, поскольку команду выполнить не удалось.

echo

exit 113   # Явное указание кода возврата 113.
           # Проверить можно, если набрать в командной строке "echo $?"
           # после выполнения этого примера.

#  В соответствии с соглашениями, 'exit 0' указывает на успешное завершение,
#+ в то время как ненулевое значение означает ошибку.

Переменная $? особенно полезна, когда необходимо проверить результат исполнения команды (см. Пример 12-30 и Пример 12-16).

Note

Символ !, может выступать как логическое "НЕ" для инверсии кода возврата.

Пример 6-2. Использование символа ! для логической инверсии кода возврата

true  # встроенная команда "true".
echo "код возврата команды \"true\" = $?"     # 0

! true
echo "код возврата команды \"! true\" = $?"   # 1
# Обратите внимание: символ "!" от команды необходимо отделять пробелом.
#    !true   вызовет сообщение об ошибке "command not found"

# Спасибо S.C.


Caution

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

Назад | Вперед
Содержание (общее) | Содержание раздела



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