On Mon, Sep 02, 2013 at 08:06:17AM -0700, David Guntner wrote: > Matej Kosik grabbed a keyboard and wrote: > > Hello, > > > > This morning I have been puzzled by bash. > > After typing the following command: > > > > for i in `seq 1 5`;do echo $i; test $i = 3 && break; done > > > > I see: > > > > 1 > > 2 > > 3 > > > > Which is OK. > > > > However, if the "break" command appears in a subshell: > > > > for i in `seq 1 5`;do echo $i; test $i = 3 && (break); done > > > > then the "break" command does not seem to have any effect > > > > 1 > > 2 > > 3 > > 4 > > 5 > > > > I am curious, is this something to be expected? > > What do you mean by "appears in a subshell?" From "man 1 bash": (list) list is executed in a subshell environment (see COMMAND EXECU‐ TION ENVIRONMENT below). Variable assignments and builtin com‐ mands that affect the shell's environment do not remain in effect after the command completes. The return status is the exit status of list.
Attachment:
signature.asc
Description: Digital signature