return - Linux


The return command in shell scripting is used to exit the current function and optionally return a value to the calling environment. This command is primarily used within functions in shell scripts. It is useful for controlling the flow of execution and managing the output of functions.


The syntax for the return command is as follows:

return [n]

Where [n] is an optional integer value. If provided, n is used as the function’s exit status; if omitted, the exit status of the last command executed is used.


The return command does not have any options or flags. Its behavior is solely determined by the optional numeric argument:

  • [n]: An integer exit status to return from the function (0 to 255). 0 typically indicates success, while any non-zero value indicates an error.


  1. Basic Example:
    A simple function that returns without specifying an exit status:

    function myfunc() {
      echo "Performing some operations"
    echo "Exit status: $?"
  2. Returning Specific Exit Status:
    Exiting a function with a specific status code:

    function check_value() {
      local val=$1
      if [[ $val -eq 100 ]]; then
        echo "Value is 100"
        return 0
        echo "Value is not 100"
        return 1
    check_value 150
    echo "Exit status: $?"

Common Issues

  • Non-Numeric Arguments: Providing a non-numeric argument to return can result in unexpected behavior or syntax errors.
  • Using return outside a function: return can only be used within a function. Using it outside can lead to an error: return: can only 'return' from a function or sourced script.


The return command is often used in conjunction with conditional statements to control the flow based on external conditions. Here’s an example integrating with other commands:

function is_directory_empty() {
  local dir=$1
  if [ -z "$(ls -A $dir)" ]; then
    echo "$dir is empty."
    return 0
    echo "$dir is not empty."
    return 1

if is_directory_empty /path/to/dir; then
  echo "Doing tasks related to empty directory."
  echo "Handling non-empty directory."
  • exit: Exits the entire script, not just a function.
  • break and continue: Control loops but not function execution.

Further reading and official documentation can often be found in Bash or shell scripting manuals, such as the GNU Bash manual available online at