xGen
xGen

Reputation: 554

Error handling in unix shell ksh

Can anyone guide to a document or explain on the below

Upvotes: 2

Views: 11708

Answers (1)

Juan Diego Godoy Robles
Juan Diego Godoy Robles

Reputation: 14955

From ksh man page.

Unhandled errors

Errors detected by the shell, such as syntax errors, cause the shell to return a non-zero exit status. If the shell is being used non-interactively, then execution of the shell file is abandoned UNLESS the error occurs inside a subshell in which case the subshell is abandoned.

Error handling

Basically check exit/return codes to handle errors:

if [ $exit_code != 0 ]; then
  # Your error handler
fi

Example

test_handler() {
  ls file_not_present
  if [ $? -eq 2 ]; then 
    echo "Handler for No such file or directory"
  elif [ $? -ne 0]; then
    echo "Handler for any other exception"
  else
    echo "Succesful execution"
  fi
}

Will throw:

ls: cannot access non_file: No such file or directory
Handler for No such file or directory

But if the command does not exit:

test_handler() {
  l file_not_present
  if [ $? -eq 2 ]; then 
    echo "Handler for No such file or directory"
  elif [ $? -ne 0 ]; then
    echo "Handler for any other exception"
  else
    echo "Succesful execution"
  fi
}

The output will be:

l: not found [No such file or directory]
Handler for any other exception

The shell returns the exit status of the last command executed (see also the exit command above). Run time errors detected by the shell are reported by printing the command or function name and the error condition. If the line number that the error occurred on is greater than one, then the line number is also printed in square brackets ([]) after the command or function name.

Upvotes: 4

Related Questions