foo() any-command
adalah sintaks Bourne yang didukung oleh shell seperti Bourne tetapi bash
, yash
dan versi terbaru dari posh
(yang hanya mendukung perintah majemuk). (Shell Bourne dan implementasi AT&T ksh
tidak mendukung foo() any-command > redirections
kecuali any-command
perintah majemuk).
foo() any-compound-command
(contoh senyawa perintah: { cmd; }
, for i do echo "$i"; done
, (cmd)
... makhluk yang paling umum digunakan { ...; }
)
adalah sintaks POSIX yang didukung oleh shell seperti Bourne dan yang umumnya ingin Anda gunakan.
function foo { ...; }
adalah sintaks shell Korn, yang mendahului sintaks Bourne. Hanya gunakan yang ini jika menulis secara spesifik untuk implementasi AT&T dari shell Korn dan perlu perlakuan khusus yang diterimanya di sana. Sintaks itu bukan POSIX, tetapi didukung oleh bash
, yash
dan zsh
untuk kompatibilitas dengan shell Korn meskipun shell tersebut (dan pdksh
varian berbasis shell Korn) tidak memperlakukannya berbeda dari sintaks standar.
function foo () { ...; }
adalah sintaks dari no shell dan tidak boleh digunakan . Itu hanya terjadi harus didukung secara tidak sengaja oleh bash
, yash
, zsh
dan pdksh
varian berdasarkan dari shell Korn. Kebetulan, itu juga awk
sintaks fungsi.
Jika kita terus turun daftar esoteris,
function foo() other-compound-command
(suka function foo() (subshell)
atau function foo() for i do; ... done
) bahkan lebih buruk. Ini didukung oleh bash
, yash
dan zsh
, tetapi bukan ksh, bahkan pdksh
varian berbasis.
Sementara:
function foo() simple command
hanya didukung oleh zsh
.
function baz { echo "baz"; }
. Lihat Bashism di wiki GreyCat.