В Linux есть возможность проверить (в консоли), с каким кодом завершилась программа.
echo $?
Обычно 0 (true) означает корректное завершение, а 1 (false) - с ошибками. Но прочитал, что это не обязательно всегда так. Типа это общепринятые обозначения в программировании, и их надо придерживаться, но коды могут быть разными. А зачем нужно что-то кроме 0 и 1? Какие еще состояния программы бывают, кроме «корректно завершилась» или «вышла с ошибками»? Можно ли тут в пример привести разные Windows-программы, которые иногда падают и вылезают ошибки вида «0x1234» что-то такое, или это не то? Не совсем понятно, о чем такие ошибки могут сказать пользователю.
Собственно, прочел, что и в баш-скрипте можно самому задать код завершения в нужном месте, например, так.
return_number=1
exit $return_number
И потом проверить его с помощью echo $? (по крайне мере, первый вызов этой штуки после завершения скрипта точно сработает... потом будет почему-то всегда 0 показывать).
Но заметил такую штуку, что если записать определенную команду в if, и заставить выполнить какое-то действие по завершению команды...
if `программа`
then
делаем какие-то действия, если программа вернула 0
else
или что-то другое, если завершилась с 1
fi
То не всегда прокатывает, в отличии от голой консоли! Тут проблема в том, что походу (поправьте, если неправ) не все консольные программы в Linux возвращают true (0) или false (1) в качестве «последнего» вывода... не знаю как назвать короче. В общем есть команды, которые ничего не выводят на экран. У таких прокатывает фишка с получением кода возврата в конструкции if. А другие просто выкидывают вывод результатов выполнения в stdout, тогда через if непонятно как получить код возврата. Ведь оно возвращает ненужный результат выполнения вместо кода возврата.
И еще, как перевести на русский определение из мануала? Гугл какую-то нелепицу выдает.
($?) Expands to the exit status of the most recently executed foreground pipeline.