git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [question] && chaining vs shell loops

From
Jeff King <peff@peff.net>
Date
Mar 29, 2015, 17:43 UTC
Message-ID
<20150329174312.GA6680@peff.net>
In-Reply-To
<874mp3948k.fsf@igel.home>
On Sun, Mar 29, 2015 at 06:07:39PM +0200, Andreas Schwab wrote:
Show 10 quoted lines
> 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
Previous: Andreas SchwabNext: Max Kirillov
Message 3 of 4 in “[question] && chaining vs shell loops”
  1. Max KirillovMar 29, 2015
  2. Andreas SchwabMar 29, 2015
  3. Jeff KingMar 29, 2015
  4. Max KirillovMar 30, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.