Path: csiph.com!weretis.net!feeder8.news.weretis.net!news.szaf.org!news.karotte.org!news.space.net!news.muc.de!.POSTED.news.muc.de!not-for-mail From: David Holland Newsgroups: muc.lists.netbsd.tech.userlevel Subject: set -e again Date: Wed, 14 Jan 2026 01:18:47 +0000 Organization: Newsgate at muc.de e.V. Sender: tech-userlevel-owner@NetBSD.org Approved: news-admin@muc.de Distribution: world Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: news.muc.de; posting-host="news.muc.de:193.149.48.2"; logging-data="18411"; mail-complaints-to="news-admin@muc.de" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netbsd.org; s=20240131; t=1768353530; bh=4VTAMQ+IhW2KYHv2SczqUuzhe3BuGSkWHniOD5LmuoA=; h=Date:From:To:Subject:List-Id:List-Unsubscribe; b=BPvrIW8cobhJ++MW3Dq0/iLDU2QBbl4tvbphi2CGoC2wSr5OEeddXoFf3QvBZkT7L iu+PSA7xVUSdkREC+wLGKVGSQDbkhx6ozsfPKsM1RMNraJtvc3n8gooejm9qGRM9M1 b1rJ/Sb+VLpwIuj/7D4leKuP1KDBktBdwmG+vVsk= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netbsd.org; s=20240131; t=1768353527; bh=4VTAMQ+IhW2KYHv2SczqUuzhe3BuGSkWHniOD5LmuoA=; h=Date:From:To:Subject; b=G5zFQMZJDtm/ZvI6Z6xSh+JsLmGD5NE8PulM06UdOqLSg2OkBRJG1zzHzYTosD4Ei c47QVd//8Mkyv+Nmu57UTgWKmEzgym4PjkgTprhJkLo9HhTP2dtAWLh9bp7MSb1peU CtkqzIn6HfJvL5X1bBIlY2VDnKCPdQNATvwA9kmc= Content-Disposition: inline Precedence: bulk X-Newsgate-Id: f02c70b8849f+ X-No-Archive: Yes Xref: csiph.com muc.lists.netbsd.tech.userlevel:11704 I discovered the following today. This: set -e f() { echo foo false echo bar } f as one might expect, prints "foo" and exits. However, this: set -e f() { echo foo false echo bar } f || echo baz echo buzz prints "foo", "bar", "buzz", and continues. Furthermore, all the shells I have in easy reach agree on it. This seems wrong - the exit status of the f is guarded, but the false is not. But also, the fact that everybody agrees makes me think it's probably the agreed result of the last round of POSIX wrangling over the -e definition some years back. Is this intended, and is there a way to get the user's intended behavior of exit on unchecked failure back? (E.g. is there a different set to get functions to return on unchecked failure that might cover this?) -- David A. Holland dholland@netbsd.org -- Posted automagically by a mail2news gateway at muc.de e.V. Please direct questions, flames, donations, etc. to news-admin@muc.de