ну наконец))) пока ты такой покрасневший далеко не ушел - сразу абстрактный пример. есть утилита "калькулятор", читает STDIN, отвечает в STDOUT, распространяется под GNU. решил ты взять эту утилиту в свой проект. лезешь читать мануал. и там сказано про коды состояния: 0 - нормальное завершение, актуальный результат 1 - софтфейл, деление на ноль 2 - фейл, недостаточно аргументов и вот ты эту утилиту юзаешь в своем проекте: calc 1+1 2 echo $? 0 ноль значит всё ок, результат достоверный. calc 2 2 echo $? 2 да, ни операции ни второго аргумента не указано. утилита просто вернула первый аргумент и отметила недостоверность результата. состояние фейл четко указывает что ты обязан исправить именно вызов. calc 42 / 0 0 echo $? 1 хм, поделили на ноль и получился ноль. что значит статус 1? софтфейл "деление на ноль". недостоверность результата отмечена и четко указывает что ты обязан выбрать отношение к этому результату. например ты можешь завершить выполнение своей программы. или показать предупреждение стандартными для твоей программы методами и не завершать процесс. вот как-то так.