Новости
... ця частина Bourne shell покрита мороком, проте все користуються нею. Chet Ramey
Команда exit може використовуватися для завершення роботи сценарію, точно так само як і в програмах на мові C. Крім того, вона може повертати деяке значення, яке може бути проаналізовано викликає процесом.
Кожна команда повертає код завершення (іноді код завершення називають повертається значенням). У разі успіху команда повинна повертати 0, а в разі помилки - нульове значення, яке, як правило, інтерпретується як код помилки. Практично всі команди і утиліти UNIX повертають 0 в разі успішного завершення, але є і виключення з правил.
Аналогічним чином ведуть себе функції, розташовані всередині сценарію, і сам сценарій, повертаючи код завершення. Код, що повертається функцією або сценарієм, визначається кодом повернення останньої команди. Команді exit можна явно вказати код повернення, у вигляді: exit nnn, де nnn - це код повернення (число в діапазоні 0 - 255).
Коли робота сценарію завершується командою exit без параметрів, то код повернення сценарію визначається кодом повернення останньої виконаної командою.
Код повернення останньої команди зберігається в спеціальній змінній $ ?. Після виконання коду функції, змінна $? зберігає код завершення останньої команди, виконаної в функції. Таким способом в Bash передається функцією. Після завершення роботи сценарію, код повернення можна отримати, звернувшись з командного рядка до змінної $ ?, тобто це буде код повернення останньої команди, виконаної в сценарії.
Приклад 6-1. завершення / код завершення
#! / Bin / bash echo hello echo $? # Код повернення = 0, оскільки команда виконалася успішно. lskdf # Неіснуюча команда. echo $? # Ненульовий код повернення, оскільки команду виконати не вдалося. echo exit 113 # Явна вказівку коду повернення 113. # Перевірити можна, якщо набрати в командному рядку "echo $?" # Після виконання цього прикладу. # Відповідно до угод, 'exit 0' вказує на успішне завершення, # + в той час як нульове значення означає помилку.
Мінлива $? особливо корисна, коли необхідно перевірити результат виконання команди (див. приклад 12-27 і приклад 12-13 ).
символ ! , Може виступати як логічне "НЕ" для інверсії коду повернення .
Приклад 6-2. Використання символу! для логічної інверсії коду повернення
true # вбудована команда "true". echo "код повернення команди \" true \ "= $?" # 0! true echo "код повернення команди \"! true \ "= $?" # 1 # Зверніть увагу: символ "!" від команди необхідно відокремлювати пропуском. #! True викличе повідомлення про помилку "command not found" # Спасибі SC
Після виконання коду функції, змінна $?
Після завершення роботи сценарію, код повернення можна отримати, звернувшись з командного рядка до змінної $ ?
Bin / bash echo hello echo $?
Echo $?
Echo "код повернення команди \" true \ "= $?
True \ "= $?