On Fri 19 Aug 2022 at 08:46:29 (-0400), Greg Wooledge wrote:
> On Thu, Aug 18, 2022 at 11:13:11PM -0500, David Wright wrote:
> > The attraction of a one-liner is partly because of screens
> > being around four times wider than high (characterwise).
> > Wouldn't it be nice if bash had Perl's die ….
> 
> Some people put a die() function in their scripts, and then use it.
> 
> die() { printf >&2 '%s\n' "$*"; exit 1; }
> 
> Or variants thereof.  There are almost as many variations as there are
> shell programmers.

But if I have that, and:

soxy is a function
soxy () 
{ 
    [ -z "$1" ] && die "Usage:  ${FUNCNAME[0]} path-to/sound-file-of-any-type 
[trim 20 2]
        runs sox to play the file with any arguments given.
        The example above reminds you to put the full argument.";
    local From="$1";
    shift;
    sox -q "$From" -t alsa default "$@"
}

then typing just:

$ soxy

into an xterm will have the same effect as:

$ ^D

killing bash and the xterm, whereas what I would want from die is a
"double-return", quitting both die and soxy, and leaving me at:

$ 

just as Perl's die would do (if soxy was a Perl program).

On Fri 19 Aug 2022 at 22:53:24 (+1000), David wrote:
> If you want to stay close to the oneliner style that you already
> have, it could be done like this:
> 
> die() {
>     printf '%s\n' "$@" 1>&2
>     return 0
> }
> 
> soxy() {
>     [[ -z "$1" ]] && die "message" && return 1
> }

I think that's the best we can do, unless I'm missing something.

Cheers,
David.

Reply via email to