Come gestireste questa situazione?
Ho una funzione in bash che da il suo output in più modi contemporaneamente:
1) return code
2) standard output
3) export di variabili
in aggiunta a fronte di errori lancia un exit per l'abort dell'intero script
Codice: Seleziona tutto
function pippo(){
if [ -z "$1" ];then
echo "ABORT"
exit 1
fi
out=$1
echo paperino
return 2
}
pippo ciao
echo $?
echo $out
pippo
echo end
stampa:
Codice: Seleziona tutto
paperino
2
ciao
ABORT
ed esce dal programma
ora, a volte il paperino va trappato in una variabile con a=$(pippo ciao).
ovviamente così mi perdo l'export di out in quanto subshell, ma mi perdo anche l'abort del programma (non la scritta ABORT) in quanto si trasforma in una return e viene trappato (o meglio, la return si trasforma in exit è più corretto).
Codice: Seleziona tutto
a=$(pippo ciao)
echo $?
echo $out
echo $a
b=$(pippo)
echo $?
echo $b
echo end
stampa
Codice: Seleziona tutto
2
paperino
1
ABORT
end
come gestireste la generazione di un vero abort? (cioè ad 'end' non ci dovrebbe arrivare)
mi sono venuti in mente diverse soluzioni, tutte sporche, ma vorrei sentire le vostre