4 SC1065
Joachim Ansorg edited this page 2024-07-05 10:56:03 +02:00

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.