Catch failure in shell script

You can use the exit status of the command explicitly in the test:

if ! unzip myfile.zip &> /dev/null; then
    # handle error
fi

You can use $?. It returns:
- 0 if the command was successfully executed.
- !0 if the command was unsuccessful.

So you can do

#!/bin/bash

unzip myfile.zip

if [ "$?" -eq 0 ]; then
    #do stuff on unzip successful
fi

Test

$ cat a
hello
$ echo $?
0
$ cat b
cat: b: No such file or directory
$ echo $?
1

The variable $? contains the exit status of the previous command. A successful exit status for (most) commands is (usually) 0, so just check for that...

#!/bin/bash
unzip myfile.zip

if [ $? == 0 ]
then
    # Do something
fi

Tags:

Unix

Shell

Bash