* [question] && chaining vs shell loops
@ 2015-03-29 15:48 Max Kirillov
2015-03-29 16:07 ` Andreas Schwab
0 siblings, 1 reply; 4+ messages in thread
From: Max Kirillov @ 2015-03-29 15:48 UTC (permalink / raw)
To: git
Hi.
As far as I can see, loops in shell ignore non-zero exit
codes of the bodies which are not last. For example, exit
code of command 'for f in false true; do $f; done' is 0,
even if there was false.
How should one workaround it in test scripts, is there any
established approach?
--
Max
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [question] && chaining vs shell loops
2015-03-29 15:48 [question] && chaining vs shell loops Max Kirillov
@ 2015-03-29 16:07 ` Andreas Schwab
2015-03-29 17:43 ` Jeff King
0 siblings, 1 reply; 4+ messages in thread
From: Andreas Schwab @ 2015-03-29 16:07 UTC (permalink / raw)
To: Max Kirillov; +Cc: git
Max Kirillov <max@max630.net> writes:
> As far as I can see, loops in shell ignore non-zero exit
> codes of the bodies which are not last. For example, exit
> code of command 'for f in false true; do $f; done' is 0,
> even if there was false.
There is nothing special with loops, that's how the exit code of
compound commands is defined in general: it's the exit code of the last
executed command.
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [question] && chaining vs shell loops
2015-03-29 16:07 ` Andreas Schwab
@ 2015-03-29 17:43 ` Jeff King
2015-03-30 6:29 ` Max Kirillov
0 siblings, 1 reply; 4+ messages in thread
From: Jeff King @ 2015-03-29 17:43 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Max Kirillov, git
On Sun, Mar 29, 2015 at 06:07:39PM +0200, Andreas Schwab wrote:
> Max Kirillov <max@max630.net> writes:
>
> > As far as I can see, loops in shell ignore non-zero exit
> > codes of the bodies which are not last. For example, exit
> > code of command 'for f in false true; do $f; done' is 0,
> > even if there was false.
>
> There is nothing special with loops, that's how the exit code of
> compound commands is defined in general: it's the exit code of the last
> executed command.
Yes, but that makes it problematic if you want to know if any of the
loop iterations failed. Doing:
for f in false true; do $f || break; done
doesn't work, because the "break" has exit code 0. Doing:
(for f in false true; do $f || exit 1; done)
works. In our test scripts, it is also OK to just "return 1", because
the test snippets execute inside a function.
If you have other solutions, I'd love to hear them. I just fixed several
of these loops recently, and I couldn't come up with anything more
clever.
-Peff
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [question] && chaining vs shell loops
2015-03-29 17:43 ` Jeff King
@ 2015-03-30 6:29 ` Max Kirillov
0 siblings, 0 replies; 4+ messages in thread
From: Max Kirillov @ 2015-03-30 6:29 UTC (permalink / raw)
To: Jeff King; +Cc: Andreas Schwab, Git Mailing List
On Sun, Mar 29, 2015 at 8:43 PM, Jeff King <peff@peff.net> wrote:
> In our test scripts, it is also OK to just "return 1", because
> the test snippets execute inside a function.
Thanks, sounds like a plan.
--
Max
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-03-30 6:29 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-29 15:48 [question] && chaining vs shell loops Max Kirillov
2015-03-29 16:07 ` Andreas Schwab
2015-03-29 17:43 ` Jeff King
2015-03-30 6:29 ` Max Kirillov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).