Howto display error message instantly when command fails

by on March 22, 2007 · 0 comments· Last updated March 22, 2007

While writing a shell script you may need to display an error message. For example if you failed to open /etc/passwd file you want to display error message.

Old way

You can write something as follows:
cat /etc/shadow 2>/dev/null
if [ $? -ne 0 ]; then echo "Failed to open file"; exit1 ; fi

New way - OR || control operator

However you can use control operator || (or lists). It has the form:
command1 || command2

command2 is executed if and only if command1 returns a non-zero exit status. For example:
$ cat /etc/shadow 2>/dev/null || echo “Failed to open file”

This way you display error message. Another option is to create die function:

#!/bin/bash
function die(){
 echo $1
 exit 1
}
# ...
# ... other code
cat /etc/shadow 2>/dev/null || die “Failed to open file”
# rest of script

AND && control operator

Similarly you can use AND (&&) control operator. It has the form:
command1 && command2

command2 is executed if, and only if, command1 returns an exit status of zero.
$ cat /etc/shadow 2>/dev/null && echo "I can open /etc/shadow file"

You can combine both to produce useful message in a script:
#!/bin/bash
...
tar -zcf /dev/st0 /data2 && echo "/data2 added to backup device" || echo "Warning: Cannot add /data2 to backup device"
....



You should follow me on twitter here or grab rss feed to keep track of new changes.

Featured Articles:

{ 0 comments… add one now }

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 5 + 15 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.



Previous post:

Next post: