On 2019-01-23 15:20, Chet Ramey wrote: > On 1/23/19 10:59 AM, Shen Herbert wrote: > > Configuration Information [Automatically generated, do not change]: > > Machine: x86_64 > > OS: linux-gnu > > Compiler: gcc > > Compilation CFLAGS: -march=x86-64 -mtune=generic -O2 -pipe > > -fstack-protector-strong -fno-plt > > -DDEFAULT_PATH_VALUE='/usr/local/sbin:/usr/local/bin:/usr/bin' > > -DSTANDARD_UTILS_PATH='/usr/bin' -DSYS_BASHRC='/etc/bash.bashrc' > > -DSYS_BASH_LOGOUT='/etc/bash.bash_logout' -DNON_INTERACTIVE_LOGIN_SHELLS > > -Wno-parentheses -Wno-format-security > > uname output: Linux arch.ishbguy.org 4.20.3-arch1-1-ARCH #1 SMP PREEMPT Wed > > Jan 16 22:38:58 UTC 2019 x86_64 GNU/Linux > > Machine Type: x86_64-pc-linux-gnu > > > > Bash Version: 5.0 > > Patch Level: 0 > > Release Status: release > > > > Description: > > > > RETURN trap will inherit last RETURN trap cmd though set +T under bash 5.0 > > or bash 4.4, however, this will not happen under bash 4.3. For example: > > ``` > > set +T > > one { trap 'echo in one' RETURN; } > > all { > > trap 'echo in all' RETURN > > one > > } > > all > > ``` > > in bash 5.0 and 4.4 will print: > > ``` > > in one > > in one > > ``` > > in bash 4.3 will print: > > ``` > > in one > > in all > > ``` > > There is only a single RETURN trap; traps are not local. If a called > function sets the RETURN trap, it should overwrite the caller's trap, > and the caller's value should not get restored. Then, when the caller > returns, and there is a RETURN trap set, it should execute the current > RETURN trap, not the one it had before it called the second function > (`one' in this case). > > The behavior of bash-4.3 was a bug. I changed it partly as the result of > this bug report: > > http://lists.gnu.org/archive/html/bug-bash/2015-08/msg00130.html > > This change made the behavior of the RETURN trap align with the DEBUG and > ERROR traps. > > Chet > -- > ``The lyf so short, the craft so long to lerne.'' - Chaucer > ``Ars longa, vita brevis'' - Hippocrates > Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/
OK, I got it. Thank you very much. -- ------------------------------------------ Herbert Shen Mail: ishb...@hotmail.com GitHub: https://github.com/ishbguy ------------------------------------------