'uname -rims'
Linux 2.6.31.1-spott i686 AuthenticAMD

'bash --version'
GNU bash, version 4.0.24(1)-release (i686-pc-linux-gnu)
I have the following construct in a script:

  ... a number of commands
  {
      ... a number of commands
  } 2>&1 | ${prog_log} "${logfile}"

It seems anything inside the braces is not seen by bash, and it doesn't
show up in a "sh -x ..." trace, but ${prog_log} does.  I had debug
echo's at the start of the block, they aren't triggered.

The shell options right before entering the block are:

  cmdhist         on
  extglob         on
  extquote        on
  force_fignore   on
  hostcomplete    on
  interactive_comments    on
  progcomp        on
  promptvars      on
  sourcepath      on

Removing the redirection makes it work:

  ... a number of commands
  {
      ... a number of commands
  } | ${prog_log} "${logfile}"

but it changes the semantics of my script and causes problems.  I could
not isolate the offender, the construct works from the command line:

  $ {
  echo mist; echo mast >&2
  } 2>&1 | cat -t
  mist
  mast

I do not even know how to debug or reproduce it in five lines ...


clemens

Reply via email to