function
keyword and ()
at the same time.#!/bin/ksh
function foo() {
echo "Hello World"
}
# POSIX sh function
foo() {
echo "Hello World"
}
or
# ksh extended function
function foo {
echo "Hello World"
}
Ksh allows two ways of defining functions: POSIX sh style foo() { ..; }
and Ksh specific function foo { ..; }
.
ShellCheck found a function definition that uses both at the same time, function foo() { ..; }
which is not allowed. Use one or the other.
Note that the two are not identical, for example:
typeset
in a function foo
will create a local variable, while in foo()
it will create a global variable.function foo
has its own trap context, while foo()
shares them with the current process.function foo
will set $0
to foo, while foo()
will inherit $0
from the current process.In Bash, function foo() { ..; }
is allowed, and function foo
and foo()
are identical. This warning does not trigger when the shebang is e.g. #!/bin/bash
.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.