[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: question about sound



On Wed, Aug 17, 2022 at 10:58:17PM -0500, David Wright wrote:
> $ type soxy
> soxy is a function
> soxy () 
> { 
>     [ -z "$1" ] && printf '%s\n' "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." 1>&2 && return 1;
>     local From="$1";
>     shift;
>     sox -q "$From" -t alsa default "$@"
> }

Pedantic note: your error checking can fail.  If the printf fails for
some reason (e.g. because stderr has been closed, or is redirected to
a file on a file system that's full), the return won't execute.

It's best just to use "if" in the normal way:

  if [ -z "$1" ]; then
    printf ...
    return 1
  fi

That way, the return will still be executed even if the printf fails.

If you *insist* on using && because you think it's tres chic or something,
then you need to use a command group:

  [ -z "$1" ] && {
    printf ...
    return 1
  }

But this is not the recommended practice.


Reply to: