Если вы будете вызывать скрипт с помощью source, вы можете использовать return <x>где <x>будет статус завершения скрипта (используйте ненулевое значение для ошибки или false). Но если вы вызываете исполняемый скрипт (т. Е. Непосредственно с его именем файла), оператор return приведет к жалобе (сообщение об ошибке «return: может только« вернуться »из функции или скрипта с источником»).
Если exit <x>вместо этого используется, когда сценарий вызывается source, это приведет к выходу из оболочки, которая запустила сценарий, но исполняемый сценарий просто завершится, как и ожидалось.
Чтобы обработать любой случай в одном и том же сценарии, вы можете использовать
return <x> 2> /dev/null || exit <x>
Это будет обрабатывать любой вызов может быть подходящим. Это предполагает, что вы будете использовать это утверждение на верхнем уровне скрипта. Я бы посоветовал не выходить из скрипта непосредственно из функции.
Примечание: <x>предполагается, что это просто число.
1последовательно. Если сценарий предназначен для запуска другим сценарием, вы можете определить свой собственный набор кодов состояния с определенным значением. Например,1== тесты не пройдены,2== компиляция не удалась. Если сценарий является частью чего-то другого, вам может потребоваться настроить коды в соответствии с используемыми там практиками. Например, когда часть набора тестов запускается automake, код77используется для обозначения пропущенного теста.