Предполагая, что вы заботитесь только о получении статуса выхода функции, а не об использовании ловушки, которую вы могли бы рассмотреть, используя функцию-обертку:
$ trace_function() {
local result
$@
result=$?
echo "$1 completed with status $result"
}
$ trace_function false
>false completed with status 1
$ trace_function true
>true completed with status 0
$ your_own_function() {
if [ "$RANDOM" -gt "$1" ]; then
echo ok
return 0
else
echo ko
return 1
fi
}
$ trace_function your_own_function 16384
>ko
>your_own_function completed with status 1
$ trace_function your_own_function 16384
>ok
>your_own_function completed with status 0