Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Bash Lanjutan

Pelajaran 2 dari 15

Membaca masukan skrip

Membaca berkas per baris: while read

Setelah pelajaran ini kamu bisa membaca berkas baris demi baris dengan while read -r, memecah kolom dengan IFS, dan menjaga baris terakhir yang tidak diakhiri newline.

±13 menitDiperiksa 5 Okt 2026

Materi

for x in $(cat cabang.txt) tampak membaca berkas per baris, padahal ia memecah isi berkas di setiap spasi: baris Kota Baru menjadi dua putaran. Cara yang tepat adalah perulangan while dengan builtin read, yang membaca satu baris setiap putaran dari berkas yang dialirkan dengan < di belakang done.

while read -r cabang; do
  mkdir -p "laporan/$cabang"
done < cabang.txt

Opsi -r membuat garis miring terbalik dibaca apa adanya. read berakhir dengan status bukan 0 saat berkas habis, dan itulah yang menghentikan while. Untuk berkas berkolom, isi IFS sebelum read: IFS=, read -r kode nama jumlah memecah baris di koma. IFS itu hanya berlaku untuk read tersebut. Bila kolomnya lebih banyak dari nama variabel, sisa kolom beserta komanya masuk ke variabel terakhir. Baris judul bisa dilewati dengan satu read sebelum perulangan.

{
  read -r judul
  while IFS=, read -r kode nama jumlah; do
    echo "$kode: $jumlah"
  done
} < stok.csv

Dua jebakan yang paling sering. Pertama, berkas yang baris terakhirnya tidak diakhiri newline: read tetap mengisi variabel, tetapi statusnya gagal, sehingga badan perulangan tidak dijalankan untuk baris itu. Penawarnya while read -r b || [ -n "$b" ]. Kedua, cat berkas | while read: setiap bagian pipa berjalan di subshell, jadi variabel penghitung yang diubah di dalam perulangan hilang sesudah done. Pakai < berkas.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi