BASH Programming: Membuat Kalkulator Sederhana di Ubuntu

Bagi yang sedang atau pernah menggunakan sistem operasi Ubuntu, pasti sudah tidak asing lagi dengan sebuah program yang bernama Terminal, layaknya Command Prompt di sistem operasi Windows.

Ada beberapa istilah yang perlu dipahami terlebih dahulu:

  • Command Line Interface: Antarmuka antara manusia dan mesin (komputer) yang berupa perintah dengan aturan gramatikal tertentu.
  • Shell: Merupakan sebuah program pembawa perintah yang diketikkan dari keyboard dan dikirim ke sistem operasi, yang berarti Shell merupakan command line interpreter.
  • BASH: Shell yang digunakan di Ubuntu dan sebagian besar distribusi Linux lainnya. BASH juga merujuk ke nama command language.
  • Terminal: Sebuah Program yang berfungsi sebagai pemberi akses ke Shell (dalam hal ini yaitu BASH).
  • Prompt: Satu atau lebih karakter yang mengindikasikan bahwa komputer siap untuk menerima input dari keyboard. Prompt juga menginformasikan nama pengguna, lokasi direktori sekarang, dan sebagainya.

BASH (Bourne Again SHell) merupakan sebuah shell di Ubuntu yang paling banyak digunakan. Sesuai namanya, BASH merupakan pengembangan dari Burne Shell yang diciptakan oleh Stephen Bourne dan dikembangkan oleh Brian Fox.

Prolog

Untuk memulai pemrograman BASH, yang kita perlukan hanya Terminal dan text editor yang di sini saya menggunakan Gedit.

Langkah pertama, buka Terminal dan pindah ke direktori home

$ cd ~

buat sebuah direktori, di sini saya namakan ‘foo’

$ mkdir foo

masuk ke direktori tersebut

$ cd foo

buat sebuah file dengan nama ‘kalkulator’

$ touch kalkulator

secara default, kita tidak memiliki hak akses untuk menjalankannya. Untuk menambah hak akses tersebut ketikkan perintah

$ chmod a+x kalkulator

lalu jalankan file tersebut dengan perintah

$ ./kalkulator

Karena file tersebut kosong, maka tidak ada yang terjadi dan sistem hanya menampilkan kembali prompt-nya saja.

Code

Buka file tersebut dengan text editor

$ gedit kalkulator

Tulis code berikut ini dan simpan file tersebut.

#!/bin/bash

while true; do
	touch kallog
	clear
	echo -n "
	Menu:
	1. Penjumlahan
	2. Pengurangan
	3. Perkalian
	4. Pembagian
	5. Lihat log
	6. Bersihkan log
	0. Keluar

	Pilihan : "

	read pil
	if [[ $pil =~ ^[0-4]$ ]]; then
		if [[ $pil == 0 ]]; then
			echo "Program terminated"; exit 0
		else
			echo -n "Bilangan pertama = "
			read var1
			echo -n "Bilangan kedua = "
			read var2
			if [[ $var1 && $var2 =~ ^-?[0-9]+([.][0-9]+)?$ ]]; then
				if [[ $pil == 1 ]]; then
					hasil=$(echo $var1+$var2 = $(($var1+$var2)))
				elif [[ $pil == 2 ]]; then
					hasil=$(echo $var1-$var2 = $(($var1-$var2)))
				elif [[ $pil == 3 ]]; then
					hasil=$(echo $var1*$var2 = $(($var1*$var2)))
				elif [[ $pil == 4 ]]; then
					hasil=$(echo $var1/$var2 = $(bc -l <<< "scale=2; $var1/$var2"))
				fi
			date >> kallog
			echo $hasil | tee -a kallog
			else
				echo "Wrong format"
			fi
		fi
	elif [[ $pil == 5 ]]; then
		less kallog
	elif [[ $pil == 6 ]]; then
		> kallog && echo "Success"
	fi
	sleep 2
done

Selain memiliki fitur perhitungan dasar, kalkulator tersebut juga dapat menyimpan history perhitungan ke sebuah file log dengan nama kallog serta menghapus isi log tersebut. Tipe data yang digunakan hanya dapat menangani integer, kecuali pembagian yang memiliki tipe floating-point dengan presisi dua digit.

Penjelasan

Baris 1

Pada BASH, semua yang diawali dengan # pada suatu baris akan dianggap komentar, namun jika terdapat tanda #! maka ini merupakan sebuah shebang yang berfungsi untuk memberitahukan sistem mengenai interpreter mana yang akan digunakan. Dengan kita menambahkan shebang, kita tidak perlu lagi menambahkan ekstensi pada nama file (misalnya sh untuk BASH, py untuk Python, dan sebagainya). Untuk kasus ini, kita menggunakan interpreter BASH yang berada di direktori /bin

Baris 18

Berfungsi untuk membaca input dari keyboard dan menyimpannya ke variabel $pil. Untuk mendeklarasikan dan menginisiasi variabel, cukup tulis nama variabel dan diikuti tanda sama dengan serta nilainya yang seluruhnya tidak dipisahkan oleh spasi. Untuk memanggilnya, selalu tambahkan simbol dollar sebelum nama variabel.

Baris 19

Operator =~ merupakan operator pembanding yang digunakan jika sisi kanannya merupakan regex, dan regex ^[0-4]$ berarti pattern yang mencocokkan bahwa variabel $pil merupakan satu digit angka antara 0 hingga 4. Jika sisi kiri cocok dengan sisi kanan, maka akan mengembalikan nilai 0, jika tidak maka 1, dan jika di sisi kanan terdapat kesalahan sintaksi maka akan mengembalikan nilai 2.

Baris 27

Mirip seperti baris 19, namun pattern yang digunakan memiliki arti bahwa $var1 dan $var2 harus merupakan angka (boleh dalam bentuk desimal) dengan atau tanpa simbol negatif.

Baris 37

Command date berfungsi untuk meng-output-kan tanggal dan waktu sekarang serta operator >> berfungsi untuk mengalihkan output (stdout) yang dihasilkan dari command date dan menyimpannya (tanpa meng-overwrite) ke file yang bernama kallog.

Baris 38

Mirip seperti baris 37, namun menggunakan command tee untuk menyimpan hasil perhitungan. Serta, terdapat operator | yang pada pemrograman disebut dengan pipe, yaitu meneruskan output yang dihasilkan dari command di sisi kiri ke command sisi kanan sebagai input.

Baris 46

Sama halnya dengan >>, operator > juga berfungsi untuk mengalihkan output yang dihasilkan dari command di sisi kirinya ke sisi kanannya, dalam hal ini menyimpan ke file kallog. Namun perbedaannya yaitu operator > akan menimpa / overwrite isi file kallog. Karena sisi kiri > pada baris ini tidak memiliki command apapun, maka kallog akan ditimpa dengan string kosong. Sedangkan operator && berfungsi untuk menjalankan command di sisi kanannya hanya jika command di sisi kiri sukses dieksekusi.

Baris 48

Berfungsi untuk memberi jeda selama 2 detik.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *