Вот небольшая демонстрация использования кодов возврата ...
При использовании различных инструментов, предоставляемых терминалом Linux, можно использовать код возврата, например, для обработки ошибок после завершения процесса. Представьте, что присутствует следующий текстовый файл myfile:
Это пример того, как проверить, как работает grep.
Когда вы выполняете команду grep, создается процесс. По завершении (и без прерывания) возвращается код от 0 до 255. Например:
$ grep order myfile
Если вы делаете
$ echo $?
$ 0
вы получите 0. Почему? Потому что grep нашел совпадение и возвратил код выхода 0, который является обычным значением для выхода с успехом. Давайте проверим это снова, но с чем-то, чего нет в нашем текстовом файле, и, следовательно, совпадение не будет найдено:
$ grep foo myfile
$ echo $?
$ 1
Поскольку grep не удалось сопоставить токен "foo" с содержимым нашего файла, код возврата равен 1 (это обычный случай, когда происходит сбой, но, как указано выше, у вас есть множество значений на выбор).
Теперь следующий скрипт bash (просто введите его в терминале Linux), хотя и очень простой, должен дать некоторое представление об обработке ошибок:
$ grep foo myfile
$ CHECK=$?
$ [ $CHECK -eq 0] && echo 'Match found'
$ [ $CHECK -ne 0] && echo 'No match was found'
$ No match was found
После второй строки ничего не выводится на терминал, так как "foo" заставляет grep вернуть 1, и мы проверяем, был ли код возврата grep равен 0. Второе условное выражение повторяет свое сообщение в последней строке, так как оно истинно из-за проверки == 1.
Как вы можете видеть, вызываете ли вы этот и тот процесс, иногда важно увидеть, что он вернул (по возвращаемому значению main ()).