Greg Wooledge wrote in <20250618140055.gf28...@wooledge.org>: |On Wed, Jun 18, 2025 at 04:57:01 +0300, nkkralev--- via Bug reports \ |for the GNU Bourne Again SHell wrote: |> to occur.]#test1 |> /bin/bash -c 'set -e ; /bin/echo $(ls /doesnt_exist) ; echo print1' |> #and the stdout/stderr displayed is: |> ls: cannot access '/doesnt_exist': No such file or directoryprint1 | |set -e is NOT an error catching mechanism. The fact that a command |substitution used as an argument to an outer command had a nonzero |exit status is not relevant to set -e. | |Only the outer command's exit status matters. | |hobbit:~$ bash -e -c 'true $(false); echo survived' |survived |hobbit:~$ bash -e -c 'false $(false); echo survived' |hobbit:~$ bash -e -c 'false $(true); echo survived' |hobbit:~$ | |set -e may have originally been conceived as an error catching mechanism, |but the implementation does not conform to that idea, never has, and |never will. Now, nearly five decades later, set -e is just a historic |artifact, and its behavior is specified by a committee to try to provide |backward compatibility for scripts that use it. | |It is a TERRIBLE idea to use it in any new scripts. You should perform |your own error checking instead. Yes, by hand. There is no other way |that actually works.
..this paradigm has however not spread widely, just yesterday flew by (still in tmux history): commit 611c1457ff32cbb39263139b599eb9b6058709fb Author: Ed Maste <ema...@freebsd.org> AuthorDate: 2025-06-05 18:50:03 +0000 Commit: Ed Maste <ema...@freebsd.org> CommitDate: 2025-06-17 17:40:33 +0000 release: Add set -e to abort upon failure We don't want to blindly continue and produce broken VM images if something goes wrong. Reviewed by: cperciva Event: Kitchener-Waterloo Hackathon 202506 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50711 --- release/scripts/mk-vmimage.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh index 3ca369b04d8e..d9197de66695 100755 --- a/release/scripts/mk-vmimage.sh +++ b/release/scripts/mk-vmimage.sh @@ -29,6 +29,7 @@ # mk-vmimage.sh: Create virtual machine disk images in various formats. # # +set -e |If you don't like that, then use a better programming language. | |See also <https://mywiki.wooledge.org/BashFAQ/105>. --End of <20250618140055.gf28...@wooledge.org> --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)