Unix / Linux - Fungsi Shell
Pada bab ini, kita akan membahas secara detail tentang fungsi shell. Fungsi memungkinkan Anda memecah keseluruhan fungsionalitas skrip menjadi subbagian logis yang lebih kecil, yang kemudian dapat dipanggil untuk melakukan tugas individualnya saat diperlukan.
Menggunakan fungsi untuk melakukan tugas berulang adalah cara terbaik untuk berkreasi code reuse. Ini adalah bagian penting dari prinsip pemrograman berorientasi objek modern.
Fungsi shell mirip dengan subrutin, prosedur, dan fungsi dalam bahasa pemrograman lain.
Membuat Fungsi
Untuk mendeklarasikan suatu fungsi, cukup gunakan sintaks berikut -
function_name () {
list of commands
}
Nama fungsi Anda adalah function_name, dan itulah yang akan Anda gunakan untuk memanggilnya dari tempat lain di skrip Anda. Nama fungsi harus diikuti dengan tanda kurung, diikuti dengan daftar perintah yang diapit oleh tanda kurung.
Contoh
Contoh berikut menunjukkan penggunaan fungsi -
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World"
}
# Invoke your function
Hello
Setelah dieksekusi, Anda akan menerima output berikut -
$./test.sh
Hello World
Meneruskan Parameter ke Fungsi
Anda dapat menentukan fungsi yang akan menerima parameter saat memanggil fungsi tersebut. Parameter ini akan diwakili oleh$1, $2 dan seterusnya.
Berikut adalah contoh di mana kami melewatkan dua parameter Zara dan Ali dan kemudian kami menangkap dan mencetak parameter ini dalam fungsinya.
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
}
# Invoke your function
Hello Zara Ali
Setelah eksekusi, Anda akan menerima hasil berikut -
$./test.sh
Hello World Zara Ali
Mengembalikan Nilai dari Fungsi
Jika Anda menjalankan file exit perintah dari dalam suatu fungsi, pengaruhnya tidak hanya untuk menghentikan eksekusi fungsi tetapi juga program shell yang memanggil fungsi tersebut.
Jika Anda hanya ingin menghentikan eksekusi fungsi, maka ada cara untuk keluar dari fungsi yang ditentukan.
Berdasarkan situasi tersebut, Anda dapat mengembalikan nilai apa pun dari fungsi Anda menggunakan return perintah yang sintaksnya sebagai berikut -
return code
Sini code bisa apa saja yang Anda pilih di sini, tetapi jelas Anda harus memilih sesuatu yang bermakna atau berguna dalam konteks skrip Anda secara keseluruhan.
Contoh
Fungsi berikut mengembalikan nilai 10 -
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
return 10
}
# Invoke your function
Hello Zara Ali
# Capture value returnd by last command
ret=$?
echo "Return value is $ret"
Setelah eksekusi, Anda akan menerima hasil berikut -
$./test.sh
Hello World Zara Ali
Return value is 10
Fungsi Bersarang
Salah satu fitur yang lebih menarik dari fungsi adalah mereka dapat memanggil dirinya sendiri dan juga fungsi lainnya. Fungsi yang memanggil dirinya sendiri dikenal sebagai arecursive function.
Contoh berikut menunjukkan penumpukan dua fungsi -
#!/bin/sh
# Calling one function from another
number_one () {
echo "This is the first function speaking..."
number_two
}
number_two () {
echo "This is now the second function speaking..."
}
# Calling function one.
number_one
Setelah eksekusi, Anda akan menerima hasil berikut -
This is the first function speaking...
This is now the second function speaking...
Panggilan Fungsi dari Prompt
Anda dapat meletakkan definisi untuk fungsi yang umum digunakan di dalam file .profile. Definisi ini akan tersedia setiap kali Anda masuk dan Anda dapat menggunakannya pada prompt perintah.
Atau, Anda dapat mengelompokkan definisi dalam sebuah file, misalnya test.sh, lalu jalankan file di shell saat ini dengan mengetik -
$. test.sh
Ini memiliki efek menyebabkan fungsi yang ditentukan di dalam test.sh untuk dibaca dan didefinisikan ke shell saat ini sebagai berikut -
$ number_one
This is the first function speaking...
This is now the second function speaking...
$
Untuk menghapus definisi fungsi dari shell, gunakan perintah unset dengan .fpilihan. Perintah ini juga digunakan untuk menghapus definisi variabel ke shell.
$ unset -f function_name