Package: bash
Version: 3.1dfsg-9
Severity: normal

This isn't documented in the bash manpage section for -e, so I assume
it's a bug (either in the manpage or with "set -e" itself)

If "set -e" is active, and you have a function which calls (in a "simple"
way, as defined by the set -e manpage section), then:

1) If you call the function normally, then the function will exit
immediately when that line runs, and not run any later lines.
This is as expected.


2) If you call that function as part of a non-simple statement
(eg: if test_func; ) then the function won't return after that
line. It will continue executing the function after that line.
This seems to be a dangerous side-effect.

Here is an example script which demonstrates this:


set -e

test_func() {
  echo "ERROR: This should never run when 'set -e' is active!"

# Try the function with an if:
if test_func; then
  echo "ERROR: test_func succeeded where it was expected to fail!"
  echo "test_func failed as expected"

# Now try the function again, outside an if:
test_func # Doesn't print the error message this time

# Logic never gets here, as expected:
echo "This never runs"


I assume that for reverse compatibility you won't 'fix' how set -e
works. But please do update the bash manpage section for 'set -e'
to document this unexpected function behaviour.

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (990, 'testing')
Architecture: i386 (i686)

Kernel: Linux 2.6.22-3-686 (SMP w/1 CPU core)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash

Versions of packages bash depends on:
ii  base-files                4.0.2          Debian base system miscellaneous f
ii  debianutils               2.28.4         Miscellaneous utilities specific t
ii  libc6                     2.7-6          GNU C Library: Shared libraries
ii  libncurses5               5.6+20080203-1 Shared libraries for terminal hand

Versions of packages bash recommends:
pn  bash-completion               <none>     (no description available)

with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to