Встроенная команда 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 независимо от того, что происходит в сценарии.