Bash Programming: Function

Sampai jugalah di artikel terakhir seri “Bash Programming for Beginner“. Hiks.. Hiks.. Kog jd melo gini sih? 😛

Postingan kali ini akan membahas mengenai “Function” sebagai lanjutan dari seri postingan sebelumnya yg membahas tentang perulangan (repetition) dgn menggunakan until. OK deh.. Langsung aja ya..

Function ato bahasa Indonesia-nya adalah fungsi, dapat dikatakan sbg script kecil di dalam sebuah script. Function adalah kode script yg dapat dipanggil lebih dari satu kali di dalam keseluruhan script. Tentunya berguna kalo kita punya task di dalam script yg mau dijalankan lebih dari sekali. Biar gak repot2 nulis ulang kodenya.. Iya kan?

Cara pakainya gimana? Gampaaang.. Tinggal tulis aja nama beserta kode function-nya, terus panggil deh nama function-nya tsb ketika akan digunakan. Sebelum liat2 contohnya, yuk kita simak dulu poin2 yg akan dibahas dalam postingan mengenai function ini:

  1. Sintaks
  2. Function Tanpa Parameter
  3. Function dengan Parameter
  4. Variabel dalam Function

 

1. SINTAKS

Mari kita simak sintaks-nya si function ini..

function function_name {
   instruction_1
   instruction_2
   ...
   instruction_n
}

Atauuuu.. Bisa ditulis sbb:

function_name () {
   instruction_1
   instruction_2
   ...
   instruction_n
}

Terserah mau pake style yg mana.. Sesuai preferensi masing2 aja. Kalo saya sih lebih suka yg pertama, soalnya ada tulisan function-nya. Jadi lebih gampang dicari di dalam script 🙂 Sedangkan instruksi di dalam function sama2 diapit oleh tanda kurung kurawal { … }.

Nah, gampang dimengerti to? Yuk, lanjuuut.. Kita masuk ke pembahasan..

 

2. FUNCTION TANPA PARAMETER

Contoh function yg paling sederhana. Tanpa penggunaan parameter. Waduh, ngomong2 masih inget gak nih sama parameter? Jangan2 lupa ya.. 

Kalo lupa, silakan flashback dulu ke postingan mengenai parameter. Habis itu, balik ke sini lagi ya.. 🙂

Yuk kita simak contoh function yg simpel aja dulu. Gak pake parameter dan variabel. Biar lebih mudah dipahami. Seperti biasa, silakan buka text editor favorit, kemudian ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan function tanpa parameter

function lihat_direktori {
   echo "Lihat isi direktori `pwd` :"
   ls
}

function bye_bye {
   exit
}

echo "1. Function lihat_direktori"
echo "==========================="
lihat_direktori
echo
echo "2. Function bye_bye --> keluar program"
echo "======================================"
bye_bye
echo "Kasihan saya terbuang, dituliskan setelah function bye_bye dipanggil."
  • Dalam script tersebut terdapat dua buah function, yaitu:

~ lihat_direktori yang menjalankan instruksi echo “Lihat isi direktori `pwd` :” dan ls

~ bye_bye yang menjalankan instruksi exit

  • Function lihat_direktori dipanggil pertama kali lalu kemudian dilanjutkan function bye_bye.
  • Karena function bye_bye menjalankan instruksi exit, maka program langsung keluar.
  • Jikapun ada instruksi yang dituliskan setelah function bye_bye dipanggil, contohnya echo “Kasihan saya terbuang, dituliskan setelah function bye_bye dipanggil.”, maka instruksi tersebut tidak dijalankan.

Simpan file tsb dgn nama “function_wop.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x function_wop.sh
root@ubuntu:/home/ninkyhade# ls -l function_wop.sh
-rwxr-xr-x 1 root root 429 Dec 17 22:25 function_wop.sh
root@ubuntu:/home/ninkyhade# bash function_wop.sh
1. Function lihat_direktori
===========================
Lihat isi direktori /home/ninkyhade :
function_wop.sh

2. Function bye_bye --> keluar program
======================================

Gimana? Gak sesusah yg dibayangin kan? OK kalo gitu.. Kita lanjut ke pembahasan berikutnya ya, mengenai..

 

3. FUNCTION DENGAN PARAMETER

Setelah kembali ke masa lalu, *ecieeeeh nostalgia nih yee…* buat ngintip apa itu parameter, mari kita simak contoh script function dengan menggunakan parameter.

Sedikit modifikasi dari script sebelumnya, silakan buka text editor favorit, kemudian ketikkan baris2 berikut:

#!/bin/bash
# Script sederhana penggunaan function dengan parameter

function lihat_direktori {
   echo "Lihat isi direktori `pwd` :"
   ls $1
   echo "Parameter fungsi di atas adalah : $1"
}

function bye_bye {
   exit
}

echo "1. Function lihat_direktori"
echo "==========================="
lihat_direktori `pwd`
echo
echo "2. Function bye_bye --> keluar program"
echo "======================================"
bye_bye
echo "Kasihan saya terbuang, dituliskan setelah function bye_bye dipanggil."
  • Perbedaan script function_wop.sh dan function_wp.sh adalah pada pemanggilan function lihat_direktori.
  • Pada function lihat_direktori di dalam script function_wp.sh diikuti oleh parameter $1 yang diisi oleh perintah `pwd` untuk menampilkan direktori aktif di mana user berada. Berhubung direktori aktif yg digunakan adalah /home/ninkyhade, maka perintah ls $1 akan menjadi ls /home/ninkyhade.

Simpan file tsb dgn nama “function_wp.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x function_wp.sh
root@ubuntu:/home/ninkyhade# ls -l function_wp.sh
-rwxr-xr-x 1 root root 484 Dec 17 22:39 function_wp.sh
root@ubuntu:/home/ninkyhade# bash function_wp.sh
1. Function lihat_direktori
===========================
Lihat isi direktori /home/ninkyhade :
function_wop.sh function_wp.sh
Parameter fungsi di atas adalah : /home/ninkyhade

2. Function bye_bye --> keluar program
======================================

Makin asik kaaan? Setelah melihat contoh script function dengan parameter, sekarang kita coba kombinasikan function dengan variabel. Tapi kita bahas dulu variabel dalam function berikut ini ya..

 

4. VARIABEL DALAM FUNCTION

Dalam function, dikenal 2 jenis variabel:

  • Variabel Lokal

~ Variabel yg didefinisikan di dalam kode function dengan sintaks:

    local var_name=<var_value>

~ Nilai dari variabel lokal hanya dapat dibaca oleh function itu sendiri.

  • Variabel Global

~ Variabel yg bisa didefinisikan di dalam maupun di luar kode function. Sintaksnya:

    var_name=<var_value>

~ Variabel global dapat digunakan di keseluruhan script.

Untuk lebih jelasnya, langsung aja kita simak contohnya seperti berikut ini. Jangan lupa buka text editor favorit, lalu ketikkan baris2 berikut.

#!/bin/bash
# Script sederhana penggunaan variabel dalam function
# Variabel Global #
tokoh="Agnez Mo"
acara="The Voice Kids Indonesia"
partner="Coach Tulus & Papa Bebi"

function sewaktu_kecil {
   # Variabel Lokal #
   local acara="Tralala Trilili"
   local partner="Kak Ferry ME dilanjutkan Kak Indra Bekti"
   # Variabel Global #
   tokoh="Agnes Monica"
   echo "Sewaktu kecil, masih menggunakan nama $tokoh dan menjadi MC di acara TV $acara bersama $partner."
   echo "Generasi '90-an pasti tau niiih.. :D"
}

echo "1. Sebelum pemanggilan function"
echo "==============================="
echo "Menyimak perjalanan karir $tokoh yang saat ini menjadi coach di acara TV $acara bersama dengan $partner."
echo
echo "2. Saat pemanggilan function"
echo "============================"
sewaktu_kecil
echo
echo "3. Setelah pemanggilan function"
echo "==============================="
echo "Baru-baru ini $tokoh juga me-release video klip musik baru dan berhasil mengantarkan salah seorang anggota team-nya menjadi juara $acara mengalahkan team-nya $partner."

Simpan file dgn nama “function_var.sh“. Sekarang coba kita jalankan file script tsb ya.. Jangan lupa ganti dulu hak aksesnya agar bisa dieksekusi. Nah, sekarang lihat hasilnya.. 🙂

root@ubuntu:/home/ninkyhade# chmod +x function_var.sh
root@ubuntu:/home/ninkyhade# ls -l function_var.sh
-rwxr-xr-x 1 root root 774 Dec 17 23:56 function_var.sh
root@ubuntu:/home/ninkyhade# bash function_var.sh
1. Sebelum pemanggilan function
===============================
Menyimak perjalanan karir Agnez Mo yang saat ini menjadi coach di acara TV The Voice Kids Indonesia bersama dengan Coach Tulus & Papa Bebi.

2. Saat pemanggilan function
============================
Sewaktu kecil, masih menggunakan nama Agnes Monica dan menjadi MC di acara TV Tralala Trilili bersama Kak Ferry ME dilanjutkan Kak Indra Bekti.
Generasi '90-an pasti tau niiih.. :D

3. Setelah pemanggilan function
===============================
Baru-baru ini Agnes Monica juga me-release video klip musik baru dan berhasil mengantarkan salah seorang anggota team-nya menjadi juara The Voice Kids Indonesia  mengalahkan team-nya Coach Tulus & Papa Bebi.
  • Sewaktu function belum dipanggil, yang dibaca adalah nilai variabel global, yaitu:

~ $tokoh berisi Agnez Mo

~ $acara berisi The Voice Kids Indonesia

~ $partner berisi Coach Tulus & Papa Bebi

  • Saat function sewaktu_kecil dipanggil, maka yang dibaca adalah nilai variabel di dalam function tersebut, yaitu:

~ $tokoh menjadi Agnes Monica

~ $acara menjadi Tralala Trilili

~ $partner menjadi Kak Ferry ME dilanjutkan Kak Indra Bekti

  • Selesai pemanggilan function, nilai variabel akan terbaca sebagai:

~ $tokoh berisi Agnes Monica

~ $acara berisi The Voice Kids Indonesia

~ $partner berisi Coach Tulus & Papa Bebi

Kemudian muncul pertanyaan. Mengapa kog pada akhirnya setelah pemanggilan function, $tokoh berisi Agnes Monica dan bukan Agnez Mo seperti di awal?

Jawabannya adalah karena di dalam function didefinisikan variabel global $tokoh yang berisi Agnes Monica. Sehingga setelah pemanggilan function, variabel global $tokoh berubah dari Agnez Mo menjadi Agnes Monica.

Oleh karena itu..

NOTE:

Nama variabel lokal lebih baik dibedakan dari nama variabel global, sehingga tidak menimbulkan kebingungan.

Paham to? Paham to? Yah, silakan diutak-atik dan dicoba-coba sendiri ya.. Smoga apa yg disampaikan di sini gak bikin bingung 😀

PENUTUP

Alhamdulillah.. Sampai di sini jumpa kita di serial “Bash Programming for Beginner“.

Harapan saya semoga semakin banyak yg mempelajari Bash programming. Dan semoga postingan ini bisa menghibur *tsaaah* dan bermanfaat buat para pembaca tercinta.. 🙂

OK, sekian dulu.. Insya Allah ketemu lagi di postingan selanjutnya..

SUMBER

 

1 comment

  1. Pingback: Bash Programming for Beginner - mappesona.me

Leave Comment

Your email address will not be published. Required fields are marked *