Re: pipefail bug

2006-12-04 Thread Chet Ramey
John Kelly wrote:
> #!/bin/bash
> 
> # With -e -o pipefail, this script should exit immediately upon returning
> # from the pipeline, since grep does not match its string, and returns 1.

This is not true, strictly speaking.  The `-e' option applies to only
simple commands.  Bash does make `-e' apply to pipelines whose last
element is a simple command, but only for compatibility with historical
shell implementations.  That accounts for the apparent anomaly.

Posix is not exactly clear on this topic, but I believe bash's
interpretation is conformant.

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
   Live Strong.  No day but today.
Chet Ramey, ITS, CWRU[EMAIL PROTECTED]http://cnswww.cns.cwru.edu/~chet/


___
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash


Re: pipefail bug

2006-12-04 Thread John Kelly
On Mon, 04 Dec 2006 11:53:03 -0500, Chet Ramey <[EMAIL PROTECTED]>
wrote:

>> # With -e -o pipefail, this script should exit immediately upon returning
>> # from the pipeline, since grep does not match its string, and returns 1.

>This is not true, strictly speaking.  The `-e' option applies to only
>simple commands.  Bash does make `-e' apply to pipelines whose last
>element is a simple command, but only for compatibility with historical
>shell implementations.  That accounts for the apparent anomaly.
>
>Posix is not exactly clear on this topic, but I believe bash's
>interpretation is conformant.

I suppose it's debatable whether it should be "fixed" or not.

Nevertheless, it's a snare for unwary script writers who expect their
script to exit on pipe errors when -e -o pipefail is set.  It's fairly
common for a pipe to end with a "while read" loop, which triggers the
anomalous behavior.

Maybe the behavior should be documented somewhere, with the suggested
work around.




___
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash