Paul Jarc wrote:
> [EMAIL PROTECTED] wrote:
> >     a exit inside a loop inside a pipe exits's the loop and not the
> >     script. may bee a error.
> 
> This is normal.  Each element of a pipeline is run in a child process.

Yes.  Another more clear way of seeing this in the example would be
something like this which more clearly illustrates the pipeline aspect
of this issue.

    #!/bin/bash
    x() {
      exit 1
    }
    echo foo | x
    echo "after the pipeline"

> cat error.fil | while read a; do

Although I am sure this is reduced from a larger script the example
also has a "useless use of cat" as submitted.  Changing from a
multiprocess pipeline to a single process fixes both.  Here is a
slightly changed version of your example.

    #!/bin/bash
    x() {
      exit 1
    }
    echo -e "1\n2\n" >error.fil
    echo "start"
    while read a; do
        x
    done < error.fil
    # this should never be executed
    echo "if you see this, it's an error"

By the way, thanks for posting such a good example illustrating the
behavior.  Very nice.  Thanks.

Bob


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

Reply via email to