Skip to content
koalaman edited this page Jan 20, 2018 · 4 revisions

Can only return 0-255. Other data should be written to stdout.

Problematic code:

myfunc() {
  return "Hello $USER"
}

Correct code:

myfunc() {
  echo "Hello $USER"
  return 0
}

Rationale:

In many languages, return is used to return from the function with a final result.

In bash, return can only be used to signal success or failure (0 = success, 1-255 = failure), more akin to throw/raise in other languages.

Results should instead be written to stdout and captured:

message=$(myfunc)
echo "The function wrote: $message"

In functions that return small integers, such as getting the cpu temperature, the value should still be written to stdout. return should be reserved for error conditions, such as "can't determine CPU temperature".

Exceptions:

None

Related resources:

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally