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? --Dave
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature