Я використовував оператор "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
команду, оскільки це зажадає від нас запуску нового процесу.