อย่างที่คนอื่นพูดคุณไม่สามารถทำเช่นนั้นได้
แต่ถ้าคุณต้องการจัดเรียงรหัสเป็นไฟล์เดียวเพื่อให้โปรแกรมหลักอยู่ด้านบนของไฟล์และฟังก์ชั่นอื่น ๆ มีการกำหนดไว้ด้านล่างคุณสามารถทำได้โดยใช้main
ฟังก์ชั่นแยกต่างหาก
เช่น
#!/bin/sh
main() {
if [ "$1" = yes ]; then
do_task_this
else
do_task_that
fi
}
do_task_this() {
...
}
do_task_that() {
...
}
main "$@"; exit
เมื่อเราเรียกmain
ที่ท้ายไฟล์ฟังก์ชั่นทั้งหมดจะถูกกำหนดไว้แล้ว อย่างชัดเจนผ่าน"$@"
การmain
เป็นสิ่งจำเป็นที่จะทำให้อาร์กิวเมนต์บรรทัดคำสั่งของสคริปต์ที่มองเห็นได้ในการทำงาน
ความชัดเจนexit
ในบรรทัดเดียวกันกับการเรียกไปยัง main นั้นไม่ใช่ข้อบังคับ แต่สามารถใช้เพื่อป้องกันสคริปต์ที่กำลังรันไม่ให้เกิดความสับสนหากไฟล์สคริปต์ถูกแก้ไข หากไม่มีเชลล์จะพยายามอ่านคำสั่งต่อจากไฟล์สคริปต์หลังจากmain
ส่งคืน (ดูวิธีการอ่านเชลล์สคริปต์ทั้งหมดก่อนที่จะรันมัน? )