Skip to content

Files

Latest commit

 

History

History
39 lines (25 loc) · 1.26 KB

SC1064.md

File metadata and controls

39 lines (25 loc) · 1.26 KB

Pattern: Missing { to open the function definition

Issue: -

Description

This rule checks for the start of a function definition, but without a function body.

One common cause is that you are trying to call a function by appending parentheses, e.g. foo() like in C. Bash does not use or allow parentheses after a function name to call it. The function foo should be called using just foo like in the example.

If you are declaring a function, make sure it looks like the correct code bellow, and that it does not try to declare any parameters (parameters are instead accessed with $1 and up).

If you are trying to do something else, look up the syntax for what you are trying to do.

Example of incorrect code:

foo() {
  echo "hello world"
}
foo()

Example of correct code:

foo() {
  echo "hello world"
}
foo

Exceptions

POSIX allows the body of a function to be any compound command, e.g. foo() for i; do :; done. Since this usage is rare, ShellCheck requires the body to be {} (or ()). This additional structure requirement helps improve error messages and suggestions by not parsing down a path that less advanced users wouldn't expect.

Further Reading