foo() any-command
adalah sintaks Bourne yang didukung oleh shell seperti Bourne tetapi bash, yashdan versi terbaru dari posh(yang hanya mendukung perintah majemuk). (Shell Bourne dan implementasi AT&T kshtidak mendukung foo() any-command > redirectionskecuali any-commandperintah 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, yashdan zshuntuk kompatibilitas dengan shell Korn meskipun shell tersebut (dan pdkshvarian 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, zshdan pdkshvarian berdasarkan dari shell Korn. Kebetulan, itu juga awksintaks 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, yashdan zsh, tetapi bukan ksh, bahkan pdkshvarian berbasis.
Sementara:
function foo() simple command
hanya didukung oleh zsh.
function baz { echo "baz"; }. Lihat Bashism di wiki GreyCat.