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.