Встроенная команда exit
выходит из оболочки (из ссылки Bash ):
exit [n]
Выйдите из оболочки, вернув статус n родителю оболочки. Если n опущено, статус выхода соответствует статусу последней выполненной команды. Любая ловушка на EXIT выполняется перед завершением оболочки.
Запуск до конца файла также завершается, возвращая код возврата последней команды, так что да, финал exit 0
заставит скрипт завершиться с успешным состоянием независимо от состояния выхода предыдущих команд. (То есть, если сценарий дошел до финала exit
.) В конце сценария вы также можете использовать true
или :
для получения кода выхода, равного нулю.
Конечно, чаще вы будете использовать exit
изнутри, if
чтобы закончить сценарий в середине.
Они должны вывести 1 ( $?
содержит код завершения, возвращенный предыдущей командой):
sh -c "false" ; echo $?
sh -c "false; exit" ; echo $?
Хотя это должно вывести 0:
sh -c "false; exit 0" ; echo $?
Я не уверен, имеет ли exit
смысл сценарий «сбой» при выполнении сценария , поскольку некоторые команды, запускаемые сценарием, вполне могут потерпеть неудачу, но сам сценарий может быть успешным. Это зависит от автора сценария, чтобы решить, что является успехом, а что нет.
Кроме того, стандартный диапазон для кодов выхода - 0..255. Коды выше 127 используются оболочкой для обозначения процесса, завершенного сигналом, но они могут быть возвращены обычным способом. wait
Системный вызов фактически возвращает более широкое значение, с остальными , содержащими битами состояния , установленных в операционной системе.
exit 0
, он завершится с кодом выхода 0 независимо от того, что происходит в сценарии.