Materi
Mesin absensi di cabang Medan dan Solo mengekspor satu berkas CSV per hari dengan dua kolom: nama dan status. Statusnya hadir, izin, sakit, atau alpa. Bagian personalia ingin rekap singkat per cabang tanpa membuka berkasnya satu per satu, dan ingin daftar karyawan yang alpa.
Empat latihan berikut membangunnya. Lulus misi ini bila minimal 80 persen latihannya benar.
Ekspor dari mesin Medan tidak diakhiri newline, jadi perulangan while read harus menjaga baris terakhir. Status izin dan sakit dihitung bersama sebagai izin dalam rekap. Skrip menerima nama berkas sebagai argumen, bukan menuliskannya di dalam skrip, supaya skrip yang sama bisa dipakai untuk cabang mana pun dan hari apa pun.
Pola yang dipakai: while IFS=, read -r nama status || [ -n "$nama" ] untuk membaca baris; case "$status" in untuk memilah; aritmetika $((H+1)) untuk menghitung; dan case "$1" in -q) untuk opsi di depan argumen. Skrip penggabung memakai "$@" supaya berapa pun berkas yang diberikan ikut diproses.