Stavo usando affermazione "l'uscita 1" nelle mie funzioni di bash per terminare l'intero script e ha funzionato bene:C'è un modo per scrivere una funzione di bash che interrompe l'intera esecuzione, indipendentemente da come viene chiamata?
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
ma poi ho capito che non fa il lavoro quando viene chiamato come:
res=$(func)
ho capito che ho creato una subshell e "l'uscita 1" interrompe che subshell e non quello primario ....
Ma c'è un modo di scrivere una funzione che interrompe tutta l'esecuzione, non importa com'è cal guidato? Ho solo bisogno di ottenere il valore di ritorno reale (echeggiato dalla funzione).
Stavo pensando alla funzione C' setsid() ', ma non funziona allo stesso modo. Aggiornato per non usare il comando 'setsid', in quanto richiederebbe l'avvio di un nuovo processo. – FatalError
Funziona.Qualsiasi livello di nidificazione di funzioni, qualsiasi flusso ... Funziona solo. – LiMar
È possibile creare una funzione abort generale() che esca dall'uso del codice del primo argomento, ad es. 'abort 2' farebbe il' trap 'exit 2 "TERM' prima di' kill'? –