Я использовал оператор exit 1 в своих функциях bash для завершения всего скрипта, и он работал нормально:
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Но потом я понял, что он не работает, когда его называют:
res=$(func)
Я понимаю, что я создал подоболочку, и "exit 1" прерывает эту подоболочку, а не основную ....
Но есть ли способ написать функцию, которая прерывает все выполнение, независимо от того, как она вызывается? Мне просто нужно получить реальное возвращаемое значение (отраженное функцией).
setsid()
функции C , но она работает по-другому. Обновлено, чтобыsetsid
команда не использовалась , так как она потребовала бы от нас запуска нового процесса.