Fungsi adalah blok kode yang dapat digunakan kembali. Seringkali kita menempatkan kode berulang dalam suatu fungsi dan memanggil fungsi itu dari berbagai tempat. Perpustakaan adalah kumpulan fungsi. Kita dapat mendefinisikan fungsi yang umum digunakan di perpustakaan dan skrip lain dapat menggunakannya tanpa menduplikasi kode.
Pada artikel ini kita akan membahas lebih lanjut tentang fungsi dan resep. Untuk tujuan demonstrasi, saya akan menggunakan Bourne Again SHell (Bash) di mesin Ubuntu.
Fungsi panggilan
Dalam fungsi panggilan Shell persis sama dengan memanggil perintah lainnya. Misalnya, jika nama fungsi Anda adalah my_func maka dapat dijalankan sebagai berikut:
$ my_func
Jika ada fungsi yang menerima argumen, maka argumen tersebut dapat diberikan dari baris perintah sebagai berikut:
$ my_func arg1 arg2 arg3
Mendefinisikan fungsi
Kita dapat menggunakan sintaks di bawah ini untuk mendefinisikan fungsi:
function function_name { Body of function }
Badan fungsi dapat berisi perintah yang valid, batasan loop, fungsi atau skrip lain. Sekarang mari kita buat fungsi sederhana yang menampilkan pesan di layar.
function print_msg { echo "Halo, Dunia" }
Sekarang mari kita jalankan fungsi ini:
$ print_msg Halo, Dunia
Seperti yang diharapkan, fungsi ini menampilkan pesan di layar.
Dalam contoh di atas kami telah membuat fungsi langsung di terminal. Kami juga dapat menyimpan fungsi ini dalam file. Contoh di bawah ini menunjukkan hal ini.
#! /bin/bash function print_msg { echo "Halo, Dunia" } print_msg
Kami telah mendefinisikan fungsi ini di dalam function.sh mengajukan. Sekarang mari kita jalankan skrip ini:
$ chmod +x function.sh $ ./function.sh Halo, Dunia
Jika diperhatikan, output di atas sama persis dengan output sebelumnya.
Selengkapnya tentang fungsi
Pada bagian sebelumnya kita telah mendefinisikan fungsi yang sangat mendasar. Namun selama pengembangan perangkat lunak, kami membutuhkan fungsi yang lebih canggih yang dapat menerima berbagai parameter dan mengembalikan nilai. Di bagian ini kita akan membahas fungsi tersebut.
Meneruskan argumen ke fungsi
Kami dapat memberikan argumen untuk berfungsi sama seperti perintah lainnya. Kita dapat mengakses argumen ini dari fungsi menggunakan simbol dollar($). Misalnya, $1 mewakili argumen pertama, $2 mewakili argumen kedua, dan seterusnya.
Mari kita ubah fungsi di atas untuk menerima pesan sebagai argumen. Fungsi kami yang dimodifikasi akan terlihat seperti ini:
function print_msg { echo "Hello $1" }
Dalam fungsi di atas kita mengakses argumen pertama menggunakan $1. Mari kita jalankan fungsi ini:
$ print_msg "LinuxTechi"
Ketika Anda menjalankan fungsi ini, itu akan menghasilkan output berikut:
Halo LinuxTechi
Mengembalikan nilai dari fungsi
Seperti bahasa pemrograman lainnya, Bash menyediakan pernyataan pengembalian yang digunakan untuk mengembalikan nilai ke pemanggil. Mari kita pahami ini dengan contoh:
function func_return_value { return 10 }
Fungsi di atas mengembalikan nilai 10 ke pemanggilnya. Mari kita jalankan fungsi ini:
$ func_return_value $ echo "Nilai yang dikembalikan oleh fungsi adalah:$?"
Ketika Anda menjalankan fungsi di atas, itu akan menghasilkan output berikut:
Nilai yang dikembalikan oleh fungsi adalah:10
CATATAN: Di bash kita harus menggunakan $? untuk menangkap nilai kembalian fungsi
Resep fungsi
Sejauh ini kami mendapat ide yang adil tentang fungsi bash. Sekarang mari kita buat beberapa fungsi bash berguna yang dapat digunakan untuk membuat hidup kita lebih mudah.
Penebang
Mari kita buat fungsi logger yang akan mencetak tanggal dan waktu bersama dengan pesan log.
function log_msg { echo "[`date '+ %F %T'` ]:[email protected]" }
Mari kita jalankan fungsi ini:
$ log_msg "Ini adalah contoh pesan log"
Ketika Anda menjalankan fungsi ini, itu akan menghasilkan output berikut:
[ 16-08-2018 19:56:34 ]:Ini adalah contoh pesan log
Menampilkan informasi sistem
Mari kita buat fungsi untuk menampilkan informasi tentang sistem GNU/Linux
function system_info { echo "### OS information ###" lsb_release -a echo echo "### Informasi prosesor ###" processor=`grep -wc "processor" /proc/cpuinfo`=` model -w "nama model" /proc/cpuinfo | awk -F:'{print $2}'` echo "Processor =$processor" echo "Model =$model" echo echo "### Memory information ###" total=`grep -w "MemTotal" /proc/meminfo | awk '{print $2}'` free=`grep -w "MemFree" /proc/meminfo | awk '{print $2}'` echo "Total memori:$total kB" echo "Memori bebas :$free kB" }
Ketika Anda menjalankan fungsi di atas, itu akan menghasilkan output berikut:
### Informasi OS ###Tidak ada modul LSB yang tersedia.ID Distributor: UbuntuDescription: Ubuntu 18.04.1 LTSRelease: 18.04Codename: bionic### Informasi prosesor ###Processor =1Model = Intel(R) Core TM) i7-7700HQ CPU @ 2.80GHz### Informasi memori ###Total memori:4015648 kBMemori gratis:2915428 kB
Temukan file atau direktori dari direktori saat ini
Fungsi di bawah ini mencari file atau direktori dari direktori saat ini:
function search { find . -nama $1 }
Mari kita cari direktori yaitu dir4 menggunakan perintah di bawah ini:
$ search dir4
Ketika Anda menjalankan perintah di atas, itu akan menghasilkan output berikut:
./dir1/dir2/dir3/dir4
Jam digital
Fungsi di bawah ini membuat jam digital sederhana di terminal
function digital_clock { hapus sementara [ 1 ] lakukan tanggal +'%T' selesaiMembuat perpustakaan
Perpustakaan adalah kumpulan fungsi. Untuk membuat perpustakaan – tentukan fungsi dalam file dan impor file itu di lingkungan saat ini.
Misalkan kita telah mendefinisikan semua fungsi dalam file utils.sh kemudian gunakan perintah di bawah ini untuk mengimpor fungsi di lingkungan saat ini:
$ source utils.shSelanjutnya Anda dapat menjalankan fungsi apa pun dari perpustakaan sama seperti perintah bash lainnya.
Kesimpulan
Dalam artikel ini kami membahas beberapa resep berguna yang akan meningkatkan produktivitas Anda. Semoga artikel ini menginspirasi Anda untuk membuat resep sendiri.
Pelajari dan gunakan panggilan sistem fork(), vfork(), wait() dan exec() di seluruh Sistem Linux Bagaimana Membandingkan Angka dan String di Linux Shell ScriptLinux