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 { ...; }
синтаксис оболочки Korn, предшествующий синтаксису Борна. Используйте его, только если вы пишете специально для 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"; }
. Смотрите Bashism в вики GreyCat.