Skip to content
Joachim Ansorg edited this page Nov 12, 2021 · 3 revisions

Trying to declare parameters? Don't. Use () and refer to params as $1, $2, ..

Problematic code:

foo(input) {
  echo "$input"
}
foo("hello world");

Correct code:

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

Rationale:

Shell script functions behave just like scripts and other commands:

  • They always take a 0 to N parameters, referred to with $1, $2 etc. They can not declare parameters by name.
  • They are executed using name arg1 arg2, and not with parentheses as C-like languages.

Exceptions:

None.

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally