Używałem instrukcji „exit 1” w moich funkcjach bash do zakończenia całego skryptu i działało dobrze:
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Ale potem zdałem sobie sprawę, że nie działa, gdy zostanie wywołany:
res=$(func)
Rozumiem, że utworzyłem podpowłokę i „wyjście 1” przerywa tę podpowłokę, a nie główną…
Ale czy istnieje sposób na napisanie funkcji, która przerywa całą realizację, bez względu na jej wywołanie? Muszę tylko uzyskać prawdziwą wartość zwracaną (powtórzoną przez funkcję).
setsid()
funkcji C , ale nie działa ona w ten sam sposób. Zaktualizowano, aby nie używaćsetsid
polecenia, ponieważ wymagałoby to rozpoczęcia nowego procesu.