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.