David Guntner <da...@guntner.com> writes: > Darac Marjal grabbed a keyboard and wrote: >> 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. > > Ok, I'm still not following you. > > What, exactly, is it that you are doing at your keyboard, in order to > run it in this "subshell?" I'm assuming that in your main one you're > just typing the expression and hitting enter. So what are you doing > when the second example fails?
Based on his post, he is putting 'break' in parentheses in the second case. This causes a new shell (the subshell) to be created, and the break command to be executed in that subshell. The subshell then exits. This is exactly the behavior I would expect: the break command isn't being executed by the same shell as your for-loop. The for-loop has no way of knowing that the subshell executed a break command (note that the break command is a shell built-in command -- it is interpreted and executed by the shell itself, no new process is created for it). -- To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/1br4d5mvmi....@snowball.wb.pfeifferfamily.net