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