Hi,

I find the docco for return [n] not easy to interpret. Here is what can be read.

       return [n]
              Stop executing a shell function or  sourced  file  and
              return  the  value specified by n to its caller. 
              ...
              Any  command  associated  with the RETURN trap is exe‐
              cuted before execution resumes after the  function  or
              script.

The later sentence is not true, and this lead to time consuming research with 
some occurences in SO as well as bash-help list back in 2018.

As some are refining the documentation may be it is worth some more precision

Here is a test case.


$ echo $BASH_VERSION
5.2.21(1)-release

$ function f { :; }
$ trap "echo catch return" RETURN
$ . /dev/null # Hurray!
catch return
$ f # huh ?
$ shopt -s extdebug
$ f # ha!
catch return

As any gurus out there knows the function return trap is only available with 
shopt -s extdebug, that is not explicitly stated in the documentation, and its 
a pain.

I don't know the impact on perf of this extdebug thing and I am a bit reluctant 
to have all my prod script turning extdebug on for the sake of trapping the 
return.

So may be instead of cheating and fixing the docco with a mention of this 
extdebug thing, a real fix could be better.

What do you think?

Cheers




Reply via email to