Date: Mon, 29 Feb 2016 12:45:03 +0700 From: Robert Elz <k...@munnari.oz.au>
Date: Sun, 28 Feb 2016 17:11:17 -0500 From: "James K. Lowden" <jklow...@schemamania.org> Message-ID: <20160228171117.a160d8ea72909ecdae778...@schemamania.org> | IMO, in the presence of -e, "false && false" should terminate | execution, just as "false && true" should. The entire compound | statement is false because the first one is. No, it shouldn't. [...] If it had been that simple, it would be easy, but that doesn't do what anyone wants if the script is something like if [ -z "$1" ]; then # whatever fi # more stuff here as if the test fails ($1 is not empty) then the test ('[') command exits with non-zero status, then the 'more stuff' would never be done. I think all that James meant was that when executing `false && false' or `false && true' as a top-level command, that whole `&&' term should return nonzero -- and hence cause the script to fail as a top-level command -- because the first subterm, `false', returns nonzero. Of course, if it weren't in a top-level command, e.g. if it were in the condition of an `if', then it would only cause the alternative branch of the `if' to be taken, &c.