myfunc() {
return "Hello $USER"
}
myfunc() {
echo "Hello $USER"
return 0
}
In many languages, return
is used to return from the
function with a final result.
In sh/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". Error or failure messages should be
written to stderr.
Note in particular that return -1
is equivalent to
return 255
, but that return 1
is the more
canonical way of expressing the first possible error code.
None
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.