Halo, karena aku baru aja masuk semester 3 di jurusan T. Informatika, berikut adalah sedikit yang aku dapat mengenai bash scripting pada linux.
Pertama-tama, apa sih itu bash scripting?
Bash Scripting adalah proses membuat suatu script shell atau program (penterjemah perintah) yang menjembatani user dengan sistem operasi.
Nah, di sini ada contoh masalah yang bisa diselesaikan menggunakan bash scripting. Yuk kita bahas...
Problem:
Ada sebuah file text yang berisi beberapa waktu check up pasien-pasien sebuah rumah sakit.
Contoh isi file:
08:00:01
10:30:34
11:32:46
15:30:10
17:22:30
Setiap harinya, semua pasien diperbolehkan minum obat mulai jam 6 pagi hingga jam 12 malam dengan selang waktu 3 jam sekali. Yang harus dilakukan adalah menambahkan keterangan jumlah obat yang sudah diminum setiap pasien selama rentang waktu yang telah ditentukan hingga waktu check up pada file serta memberi nama pasien sesuai abjad dari A dan seterusnya. Buatlah script untuk melakukan hal ini!
Contoh isi file setelah script dijalankan:
08:00:01 - Pasien A Sudah Minum 1 obat
10:30:34 - Pasien B Sudah Minum 2 obat
11:32:46 - Pasien C Sudah Minum 2 obat
15:30:10 - Pasien D Sudah Minum 4 obat
17:22:30 - Pasien E Sudah Minum 4 obat
Script
![]() |
Salah satu bash scripting untuk menyelesaikan masalah di atas |
![]() |
Gambar 1 |
Untuk menjalankan program ini, terlebih dahulu kita harus sudah memiliki file text yang berisi waktu check up. Oleh karena itu kita gunakan "filename" sebagai penampung argumen yang akan diinputkan sebagai nama file yang akan diedit.
Syntax di atas adalah untuk looping dalam membaca file tiap baris atau line karena yang kita butuhkan adalah mengakses waktu dalam file per barisnya. Pada bagian akhir berisi nama file yang akan diakses untuk dijalankan sesuai perintah di dalamnya. Dalam hal ini adalah "$filename" seperti yang tertera pada gambar 1.
Yang akan dilakukan selanjutnya adalah membaca tiap baris file yang berisi waktu dengan format "HH:MM:SS". Dalam hal ini, sesuai yang diminta, bahwa tiap pasien minum obat dimulai dari pukul 6 dan minum lagi tiap 3 jam sekali. oelh karena itu, yang kita butuhkan adalah hanya jamnya saja. Dengan kata lain, kita perlu mengakses HH yang tertera tiap barisnya.
Nah, kita bisa menggunakan syntax ${line:a:b}. Maksud dari syntax tersebut adalah kita mengambil string pada baris yaitu pada index ke a sebanyak b character(s).
Karena ada kemungkinan penulisan jam dengan angka 0 di depannya misal penulisan jam 01-09, maka kita perlu menggunakan kondisi "if". Jika char pertama samadengan 0, kita set variable "jam" agar menunjukkan angka kedua. Sebaliknya jika tidak, maka set variable "jam" dengan kedua angka tersebut.
Setelah mendapatkan jam check up dalam angka, kita akan menemukan kondisi lagi di mana waktu check up tersebut apakah lebih dari waktu minum obat untuk kali pertama, pas dengan waktu minum obat untuk kali pertama, atau bahkan kurang. Gambar di atas menunjukkan kondisi apabila kita mendapatkan waktu check up yang lebih dari jam 6 ( -gt yang artinya greater than). Selanjutnya tinggal dikurangi dan dibagi 3. Jangan lupa untuk menambahkan 1 karena pada jam 6 sudah dianggap telah meminum 1 obat. Hasilnya ditampung pada variable obat yang telah menunjukkan jumlah obat yg diminum pasien.
Kondisi kedua yaitu jam menunjukkan sama dengan 6, maka tinggal set obat dengan 1.
Kondisi terakhir apabila jam menunjukkan jurang dari 6, maka tinggal set obat dengan 0.
![]() |
Gambar 2 |
![]() |
Gambar 3 |
Nah, kita bisa menggunakan syntax ${line:a:b}. Maksud dari syntax tersebut adalah kita mengambil string pada baris yaitu pada index ke a sebanyak b character(s).
Karena ada kemungkinan penulisan jam dengan angka 0 di depannya misal penulisan jam 01-09, maka kita perlu menggunakan kondisi "if". Jika char pertama samadengan 0, kita set variable "jam" agar menunjukkan angka kedua. Sebaliknya jika tidak, maka set variable "jam" dengan kedua angka tersebut.
![]() |
Gambar 4 |
![]() |
Gambar 5 |
![]() |
Gambar 6 |
![]() |
Gambar 7 |
Setelah mengetahui jumlah obat yang diminum, barulah edit isi file dengan syntax di atas. Di sini kita akan memasukkan nama pasien dari A dan seterusnya. Untuk itulah kita membutuhkan string "pasien" yang sudah diisi pada gambar 1 dengan alfabet A samai Z. Setelah itu, tinggal kita gunakan string tersebut untuk mengambil 1 huruf saja dengan counter "x" yang pada gambar 1 juga sudah diinisialisasi 0.
![]() |
Gambar 8 |
Karena abjad hanya ada 26, dibutuhkan set ulang "x" agar nama pasien bisa kembali ke A lagi dan seterusnya.
Program siap dijalankan pada terminal dengan menginputkan nama file yang akan diedit. ^^
Terima kasih dan mohon maaf apabila ada kesalahan :3
Comments
Post a Comment