bug-bash
[Top][All Lists]
Advanced

[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

Hi

    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

 

Thanks

David

 

 

 

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

#!/bin/bash

 

trap_1() {

   trap  'echo this is trap 1' ERR

}

 

trap_off() {

   trap ''  ERR

}

 

trap_2() {

   trap 'echo this is  trap 2'  ERR

}

 

 

trap_1

trap -p ERR

 

trap_2

trap -p ERR

 

trap_off

trap_2

trap -p ERR

 

trap ""  ERR

trap_2

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]