u can try

trap '(( $? )) && exit 2' debug

On Wed, Jun 18, 2025, 5:05 PM Steffen Nurpmeso <stef...@sdaoden.eu> wrote:

> 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)
>
>
  • set -e doesn't ... nkkralev--- via Bug reports for the GNU Bourne Again SHell
    • Re: set -e... Greg Wooledge
      • Re: se... Steffen Nurpmeso
        • Re... microsuxx
          • ... nkkralev--- via Bug reports for the GNU Bourne Again SHell
            • ... microsuxx
              • ... microsuxx
                • ... nkkralev--- via Bug reports for the GNU Bourne Again SHell
                • ... Lawrence Velázquez
              • ... Robert Elz
    • Re: set -e... Chet Ramey

Reply via email to