All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.shellcheck.rules.shellcheck.SC2152.html Maven / Gradle / Ivy

The newest version!

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 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.

Exceptions

None

Related resources





© 2015 - 2025 Weber Informatics LLC | Privacy Policy