[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: strange bash behavior



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


Reply to: