Exit a Script On Error Exit a Script On Error bash bash

Exit a Script On Error


If you put set -e in a script, the script will terminate as soon as any command inside it fails (i.e. as soon as any command returns a nonzero status). This doesn't let you write your own message, but often the failing command's own messages are enough.

The advantage of this approach is that it's automatic: you don't run the risk of forgetting to deal with an error case.

Commands whose status is tested by a conditional (such as if, && or ||) do not terminate the script (otherwise the conditional would be pointless). An idiom for the occasional command whose failure doesn't matter is command-that-may-fail || true. You can also turn set -e off for a part of the script with set +e.


Are you looking for exit?

This is the best bash guide around.http://tldp.org/LDP/abs/html/

In context:

if jarsigner -verbose -keystore $keyst -keystore $pass $jar_file $kaliasthen    echo $jar_file signed sucessfullyelse    echo ERROR: Failed to sign $jar_file. Please recheck the variables 1>&2    exit 1 # terminate and indicate errorfi...


If you want to be able to handle an error instead of blindly exiting, instead of using set -e, use a trap on the ERR pseudo signal.

#!/bin/bashf () {    errorCode=$? # save the exit code as the first thing done in the trap function    echo "error $errorCode"    echo "the command executing at the time of the error was"    echo "$BASH_COMMAND"    echo "on line ${BASH_LINENO[0]}"    # do some error handling, cleanup, logging, notification    # $BASH_COMMAND contains the command that was being executed at the time of the trap    # ${BASH_LINENO[0]} contains the line number in the script of that command    # exit the script or return to try again, etc.    exit $errorCode  # or use some other value or do return instead}trap f ERR# do some stufffalse # returns 1 so it triggers the trap# maybe do some other stuff

Other traps can be set to handle other signals, including the usual Unix signals plus the other Bash pseudo signals RETURN and DEBUG.