Есть ли способ написать функцию bash, которая прерывает все выполнение, независимо от того, как она вызывается?

Я использовал оператор "exit 1" в своих функциях bash для завершения всего скрипта, и он работал нормально:

function func()
{
   echo "Goodbye"
   exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"

Но потом я понял, что он не работает при вызове, например:

res=$(func)

Я понимаю, что я создал подоболочку, и "выход 1" прерывает эту подоболочку, а не основную....

Но есть ли способ написать функцию, которая прерывает все выполнение, независимо от того, как это называется?Мне просто нужно получить реальное возвращаемое значение (повторяется функцией).

70
задан Piotr Dobrogost 7 May 2014 в 07:34
поделиться