Seperti yang dikatakan orang lain, Anda tidak dapat melakukan itu.
Tetapi jika Anda ingin mengatur kode menjadi satu file sehingga program utama berada di bagian atas file, dan fungsi lainnya ditentukan di bawah, Anda dapat melakukannya dengan memiliki main
terpisah fungsi.
Misalnya.
#!/bin/sh
main() {
if [ "$1" = yes ]; then
do_task_this
else
do_task_that
fi
}
do_task_this() {
...
}
do_task_that() {
...
}
main "[email protected]"; exit
Saat kita memanggil main
di akhir file, semua fungsi sudah ditentukan. Meneruskan "[email protected]"
secara eksplisit ke main
diperlukan untuk membuat argumen baris perintah skrip terlihat di fungsi.
exit
eksplisit pada baris yang sama dengan panggilan ke main tidak wajib, tetapi dapat digunakan untuk mencegah skrip yang sedang berjalan menjadi kacau jika file skrip dimodifikasi. Tanpanya, shell akan mencoba melanjutkan membaca perintah dari file skrip setelah main
pengembalian. (lihat Bagaimana cara membaca seluruh skrip shell sebelum menjalankannya?)
Tidak, fungsi harus ada di lingkungan shell pada saat memanggilnya.
"Panduan Gaya Shell" Google memiliki perbaikan untuk ini:
Fungsi yang disebut
main
diperlukan agar skrip cukup panjang untuk menampung setidaknya satu fungsi lainnya.
Di bagian paling akhir skrip, setelah semua fungsi, sebagai satu-satunya pernyataan yang tidak ada dalam suatu fungsi, Anda akan memilikinya
main "[email protected]"
Ini akan memanggil main
berfungsi dengan parameter apa pun yang diberikan skrip. main
fungsi dapat ditempatkan di bagian atas skrip (panduan gaya mengatakan untuk meletakkannya di bagian bawah, tetapi sekali lagi, ia mengatakan banyak hal).
Saat shell mencapai main
panggilan, semua fungsi dalam skrip telah diuraikan dan karenanya dapat dipanggil dari dalam main
fungsi.
Tidak, fungsi harus dideklarasikan sebelum digunakan. Skrip Shell dibaca baris demi baris dan ditindaklanjuti baris demi baris; jadi suatu fungsi tidak akan ada sampai deklarasinya dieksekusi.