You are not logged in.

#1 2009-02-11 14:02:47

ezzetabi
Member
Registered: 2006-08-27
Posts: 947

bash scripting, writing something meaningful on error.

The idiom

work || exit 1

(where exit might be return)
works well, but I'd like giving the user something more visual than the mere non-zero return.

At the moment I use:

work
if [[ $? -ne 0 ]] ;then
  echo "An error occurred while doing work!"
  exit 1
fi

But it seems so verbose... There is a easy way just to say `on error leave a message and exit(return)' ?

Thanks.

Offline

#2 2009-02-11 14:07:04

Cerebral
Forum Fellow
From: Waterloo, ON, CA
Registered: 2005-04-08
Posts: 3,108
Website

Re: bash scripting, writing something meaningful on error.

You could define a helper function.

function lexit()
{
    message="$1"
    exitCode=$2
    echo "ERROR: $message"
    exit $exitCode
}

work || lexit "Couldn't perform work!" 1

Offline

#3 2009-02-11 15:21:41

tam1138
Member
Registered: 2007-09-10
Posts: 238

Re: bash scripting, writing something meaningful on error.

work || echo "kablooie" && exit 1

Offline

#4 2009-02-12 15:07:15

ezzetabi
Member
Registered: 2006-08-27
Posts: 947

Re: bash scripting, writing something meaningful on error.

@Cerebral
It does not work (does it?) for return, but it works great for exit. Thanks.

@tam1138

$ false || echo A && echo B
A
B
$ true || echo A && echo Opsss
Opsss

Offline

#5 2009-02-12 16:26:42

Cerebral
Forum Fellow
From: Waterloo, ON, CA
Registered: 2005-04-08
Posts: 3,108
Website

Re: bash scripting, writing something meaningful on error.

Adding parentheses helps:

 $ false || ( echo A && echo B )
A
B
 $ true || ( echo A && echo B )
 $

Offline

#6 2009-02-12 17:50:14

perbh
Member
From: Republic of Texas
Registered: 2005-03-04
Posts: 765

Re: bash scripting, writing something meaningful on error.

*chuckles*
My own 2c worth ... guess we all have our different ways

All of my shell-scripts starts with this:
say() { echo -en "$@" >&2; }
die() { say "$@\n"; exit 1; }

then - somewhere further down
do_something || die "this didn't work!"

Offline

Board footer

Powered by FluxBB