[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

first trap call behaviour

From: David Waddell
Subject: first trap call behaviour
Date: Tue, 28 Jul 2015 10:34:45 +0000


    Just a quick query re. the a behavior of trap when called from function, not sure if it’s a bug or inconsistency or intentional.


    Basically it seems (without set –o errtrace)

-          an ERR trap can be set from within a function when no ERR trap is currently defined.

-          ERR trap can then not be changed or cleared unless cleared from global scope (ie cannot be cleared within a function).

-          With set –o errtrace, the subsequent calls do succeed in changing the trap, as might be expected.


    I’m just puzzled at the fact that I can set the ERR trap within a function the first time, but not subsequently.


   Example script and output below







Configuration Information [Automatically generated, do not change]:

Machine: x86_64

OS: linux-gnu

Compiler: gcc

Compilation CFLAGS:  -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64' -DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-redhat-linux-gnu' -DCONF_VENDOR='redhat' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL -DHAVE_CONFIG_H   -I.  -I. -I./include -I./lib  -D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='/usr/local/bin:/usr/bin'  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic

uname output: Linux oam02.bfs.openwave.com 3.10.0-229.el7.x86_64 #1 SMP Thu Jan 29 18:37:38 EST 2015 x86_64 x86_64 x86_64 GNU/Linux

Machine Type: x86_64-redhat-linux-gnu


Bash Version: 4.2

Patch Level: 46

Release Status: release


Example script and output :


  oam02$ cat test.sh



trap_1() {

   trap  'echo this is trap 1' ERR



trap_off() {

   trap ''  ERR



trap_2() {

   trap 'echo this is  trap 2'  ERR





trap -p ERR



trap -p ERR




trap -p ERR


trap ""  ERR


trap -p ERR


oam02$ ./test.sh

trap -- 'echo this is trap 1' ERR

trap -- 'echo this is trap 1' ERR

trap -- 'echo this is trap 1' ERR

trap -- 'echo this is  trap 2' ERR

reply via email to

[Prev in Thread] Current Thread [Next in Thread]