Loop adalah salah satu konsep dasar bahasa pemrograman. Loop berguna saat Anda ingin menjalankan serangkaian perintah beberapa kali hingga kondisi tertentu terpenuhi.
Dalam bahasa skrip seperti Bash, loop berguna untuk mengotomatiskan tugas yang berulang. Ada tiga konstruksi loop dasar dalam skrip Bash, for
loop, while
loop, dan until
lingkaran.
Tutorial ini mencakup dasar-dasar while
loop di Bash. Kami juga akan menunjukkan cara menggunakan break
dan continue
pernyataan untuk mengubah aliran loop.
Bash while
Putaran #
while
loop digunakan untuk melakukan serangkaian perintah tertentu dalam jumlah yang tidak diketahui selama kondisi yang diberikan bernilai benar.
Bash while
loop mengambil bentuk berikut:
while [CONDITION]
do
[COMMANDS]
done
while
pernyataan dimulai dengan while
kata kunci, diikuti dengan ekspresi kondisional.
Kondisi dievaluasi sebelum menjalankan perintah. Jika kondisi bernilai benar, perintah dijalankan. Jika tidak, jika kondisi bernilai false, loop dihentikan, dan kontrol program akan diteruskan ke perintah berikut.
Pada contoh di bawah ini, pada setiap iterasi, nilai saat ini dari variabel i
dicetak dan ditambah satu.
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
Tue loop berulang selama i
kurang atau sama dengan dua. Ini akan menghasilkan output berikut:
Number: 0
Number: 1
Number: 2
while
yang tak terbatas Putaran #
Perulangan tak terbatas adalah perulangan yang berulang tanpa batas dan tidak pernah berakhir. Jika kondisi selalu bernilai true, Anda mendapatkan infinite loop.
Dalam contoh berikut, kami menggunakan perintah bawaan :
untuk membuat loop tak terbatas. :
selalu kembali benar. Anda juga dapat menggunakan true
built-in atau pernyataan lain yang selalu mengembalikan true.
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
while
loop di atas akan berjalan tanpa batas. Anda dapat mengakhiri loop dengan menekan CTRL+C
.
Berikut ini adalah padanan satu baris:
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
Membaca File Baris Demi Baris #
Salah satu penggunaan paling umum dari while
loop adalah untuk membaca file, aliran data, atau variabel baris demi baris.
Berikut adalah contoh yang berbunyi /etc/passwd
file baris demi baris dan mencetak setiap baris:
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
Alih-alih mengontrol while
loop dengan kondisi, kami menggunakan pengalihan input (< "$file"
) untuk meneruskan file ke read
perintah, yang mengontrol loop. while
loop akan berjalan sampai baris terakhir dibaca.
Saat membaca file baris demi baris, selalu gunakan read
dengan -r
opsi untuk mencegah garis miring terbalik bertindak sebagai karakter pelarian.
Secara default, tombol read
perintah memangkas karakter spasi di depan/di belakang (spasi dan tab). Gunakan IFS=
opsi sebelum read
untuk mencegah perilaku ini:
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break
dan continue
Pernyataan #
break
dan continue
pernyataan dapat digunakan untuk mengontrol eksekusi loop while.
break
Pernyataan #
break
pernyataan mengakhiri loop saat ini dan meneruskan kontrol program ke perintah yang mengikuti loop yang dihentikan. Biasanya digunakan untuk mengakhiri loop ketika kondisi tertentu terpenuhi.
Dalam contoh berikut, eksekusi loop akan dihentikan setelah item yang diulang saat ini sama dengan 2
.
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue
Pernyataan #
continue
pernyataan keluar dari iterasi loop saat ini dan meneruskan kontrol program ke iterasi loop berikutnya.
Berikut di bawah ini, setelah item yang diulang saat ini sama dengan 2
continue
pernyataan akan menyebabkan eksekusi kembali ke awal loop dan melanjutkan iterasi berikutnya.
i=0
while [ $i -lt 5 ]
do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
Kesimpulan #
while
loop berulang kali mengeksekusi serangkaian perintah yang diberikan selama kondisinya benar.
Jika Anda memiliki pertanyaan atau masukan, jangan ragu untuk memberikan komentar.