On 09.04.2012 19:31, Dan Stromberg wrote: > > What should be the behavior of the following? > > if cmd1 > then > cmd2 > fi && if cmd3 > then > cmd4 > fi
If cmd1 is true then execute cmd2; cmd2 defines the exit code for the first if depending on cmd2 return value, if true then the subsequent if is executed if cmd3 is true then execute cmd4; cmd4 defines the exit code for the second if > > I've not joined two if's with a short-circuit boolean before, but I'm > suddenly working on a script where someone else has. > > Playing around, it appears that cmd1 and cmd3 have no direct impact on > the exit codes of the two if's, while cmd2 and cmd4 do (if cmd1 or > cmd3 evaluate true). Yes. cmd1 and cmd3 control the if condition, and the resulting exit code is defined by the last command executed, either cmd2 or cmd4. > Is this the defined behavior in POSIX shell? In > bash? In bash symlinked to /bin/sh? In dash? I think it is defined that way in all POSIX complient shells. Janis > > TIA! > >