foo() any-command
Синтаксис Борна підтримується будь-Борн-подібної оболонкою , але bash
, yash
і останні версії posh
(які підтримують тільки складові команди). (оболонка Bourne та реалізація AT&T ksh
не підтримують, foo() any-command > redirections
якщо any-command
це не складна команда).
foo() any-compound-command
(Приклади з'єднання команд: { cmd; }
, for i do echo "$i"; done
, (cmd)
... найбільш часто використовуваний істота { ...; }
)
- це синтаксис POSIX, який підтримується будь-якою оболонкою Bourne, і той, який ти зазвичай хочеш використовувати.
function foo { ...; }
є синтаксисом оболонки Корна, який передує синтаксису Борна. Використовуйте цей лише тоді, коли ви пишете спеціально для AT&T реалізації оболонки Korn і потребуєте конкретного лікування, яке воно там отримує. Цей синтаксис НЕ POSIX, але підтримується bash
, yash
і zsh
для сумісності з оболонкою Korn , хоча ці снаряди (і pdksh
-А варіанти Korn оболонки) не застосовуватися до нього не відрізняються від стандартного синтаксису.
function foo () { ...; }
є синтаксисом без оболонки і не повинен використовуватися . Це відбувається тільки за підтримки аварії на bash
, yash
, zsh
і на pdksh
основі варіантів оболонки Korn. До речі, це також awk
синтаксис функції.
Якщо ми продовжимо спускатися по езотеричному списку,
function foo() other-compound-command
(як function foo() (subshell)
або function foo() for i do; ... done
) ще гірше. Вона підтримується bash
, yash
і zsh
, але не КШ, навіть pdksh
-На варіанти.
Поки:
function foo() simple command
підтримується лише користувачем zsh
.
function baz { echo "baz"; }
. Дивіться башизм у вікі GreyCat.