Membuat Fungsi pada Bash

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Membuat Fungsi pada Bash
Photo by Markus Spiske on Unsplash

TeknoCerdas.com – Salam cerdas untuk kita semua. Bash adalah salah satu shell yang paling populer yang digunakan saat ini. Tidak hanya pengembang di Linux dan macOS, pengembang di Windows pun sekarang banyak yang menggunakan Bash. Selain sebagai shell untuk mengetikkan perintah yang akan dieksekusi oleh OS, Bash juga dapat dikategorikan sebagai bahasa pemrograman karena memiliki fitur-fitur yang dibutuhkan. Salah satu fitur Bash untuk mempermudah pembuatan shell script adalah fungsi. Tulisan ini akan membahas bagaimana membuat fungsi pada Bash.

Tidak ada keyword atau kata kunci khusus ketika mendeklarasikan fungsi pada bash. Syntax yang digunakan adalah:

NAMA_FUNGSI()
{
  # Logika dari fungsi disini.
}

Baca Juga
Cek Saldo dan Mutasi Bank BCA dengan Bash

Mari kita buat sebuah fungsi sederhana bernama hello_name() yang akan mencetak nama yang dikirikan dari argumen pertama.

$ hello_name()
{
  echo "$1"
}

Argumen pada fungsi sama dengan ketika menggunakan shell script. Dimana variabel $1 untuk argumen pertama, $2 untuk kedua dan seterusnya. Sekarang mari kita panggil fungsi tersebut.

$ hello_name TeknoCerdas
Hello TeknoCerdas

Pada shell scripting salah satu hal yang krusial adalah menentukan exit code atau exit status. Apakah bisa dilakukan pada fungsi? Bisa yaitu dengan kata kunci return.

$ is_superuser()
{
  [[ "$( whoami )" = "root" ]] && return 0
  return 1
}

Sama seperti konsep exit code file shell script pada fungsi return 0 mengindikasikan bahwa fungsi mengembalikan nilai true atau success. Selain nol maka false.

Sehingga jika dijalankan fungsi is_superuser() dapat digunakan sebagai pengecekan kondisi.

$ whomai
rioastamal
$ is_superuser && echo "YES" || echo "NO"
NO

Keyword return tidak mengenal exit code dengan argumen string. Lalu bagaimana jika ingin sebuah fungsi mengembalikan sebuah string. Mudah saja, lakukan echo atau tampilkan apapun sebagai output akhir. Sehingga fungsi tersebut layaknya sebuah program lain.

$ myip()
{
  curl -s -q wtfismyip.com/text
}
$ myip
36.84.110.137

Fungsi tersebut adalah mendapatkan IP public dari komputer. Contoh lain misal ingin menghasilkan random string dengan panjang tertentu.

$ random_string()
{
  local NUM_OF_CHARS=$1
  [[ -z "$NUM_OF_CHARS" ]] && NUM_OF_CHARS=32

  cat /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9!@#$%^&' | head -c $NUM_OF_CHARS
}
$ random_string 64
Jb2dhazp0QY6&4yY5Z6^VMCV1lRWpfmWkpq5j^xcDzGN5O1q#xp1$XmydpN6zH0H

Pada fungsi random_string kita menggunakan keyword local artinya variabel NUM_OF_CHARS hanya berlaku pada lingkup fungsi itu saja. Karakter random yang dikembalikan tergantung argumen pertama, jika tidak diberikan maka defaultnya adadalah 32 karakter.