foo() any-command
เป็นไวยากรณ์บอร์นได้รับการสนับสนุนโดยใด ๆ บอร์นเชลล์เหมือน แต่bash
, yash
และรุ่นล่าสุดposh
(ซึ่งสนับสนุนเพียงคำสั่งผสม) (เชลล์เป้าหมายและการใช้งาน AT&T ที่ksh
ไม่สนับสนุนfoo() any-command > redirections
เว้นแต่any-command
เป็นคำสั่งผสม)
foo() any-compound-command
(ตัวอย่างของสารประกอบคำสั่ง: { cmd; }
, for i do echo "$i"; done
, (cmd)
... ถูกนำมาใช้กันมากที่สุด{ ...; }
)
เป็นไวยากรณ์ POSIX ที่ได้รับการสนับสนุนโดยเชลล์ที่มีลักษณะคล้ายบอร์นใด ๆ และหนึ่งที่คุณต้องการใช้โดยทั่วไป
function foo { ...; }
คือไวยากรณ์ Korn เชลล์ซึ่งมีอยู่ในไวยากรณ์ Bourne ใช้อันนี้เฉพาะเมื่อเขียนโดยเฉพาะสำหรับการปรับใช้ AT&T ของ Korn เชลล์และต้องการการรักษาเฉพาะที่ได้รับ ไวยากรณ์ที่ไม่ POSIX แต่ได้รับการสนับสนุนโดยbash
, yash
และzsh
เพื่อให้เข้ากับเปลือกกรแม้ว่าหอยเหล่านั้น (และpdksh
สายพันธุ์ชั่นของเปลือกกร) ไม่รักษามันแตกต่างจากรูปแบบมาตรฐาน
function foo () { ...; }
ไวยากรณ์ของไม่มีเปลือกและไม่ควรนำมาใช้ มันจะเกิดขึ้นได้รับการสนับสนุนจากอุบัติเหตุโดยbash
, yash
, zsh
และpdksh
ตัวแปรตามของเปลือกกร บังเอิญมันเป็นawk
ฟังก์ชั่นไวยากรณ์
ถ้าเราลงไปในรายการที่ลึกลับ
function foo() other-compound-command
(เหมือนfunction foo() (subshell)
หรือfunction foo() for i do; ... done
) ยิ่งแย่กว่านั้นอีก ได้รับการสนับสนุนโดยbash
, yash
และzsh
แต่ไม่ KSH แม้pdksh
สายพันธุ์ชั่น
ในขณะที่:
function foo() simple command
zsh
ได้รับการสนับสนุนโดยเฉพาะ
function baz { echo "baz"; }
นอกจากนี้ยังมีหรือไม่มีวงเล็บ: ดูBashismในวิกิของ GreyCat