Bash Scripting – Sementara Dan Sampai Loop Dijelaskan Dengan Contoh

Ini adalah artikel lanjutan dalam bash loop dimana pada artikel sebelumnya sudah kami jelaskan tentang for loop. Pada artikel ini, kita akan melihat dua loop bash lagi yaitu, while dan hingga loop.

Perulangan while sebagian besar digunakan ketika Anda harus membaca isi file dan memprosesnya lebih lanjut. Membaca dan menulis ke file adalah operasi umum saat Anda menulis skrip bash. Kita akan melihat cara membaca file menggunakan while loop.

Kita sudah memiliki artikel yang sangat rinci tentang cara menulis ke file menggunakan operator pengalihan. Pengalihan
Bash Dijelaskan Dengan Contoh
Fungsi loop while mirip dengan for loop. Perulangan for mengulangi daftar item dan menjalankan blok kode N beberapa kali. Di sini, dalam perulangan while, kondisi dievaluasi terlebih dahulu, dan jika kondisinya benar, blok kode akan dieksekusi sampai kondisi dievaluasi menjadi false.
Contents
1. While loopEXAMPLE 1 – Evaluasi dan iterateCONTOH 2 – Infinite loopsCONTOH 3 – Internal field separator (IFS)CONTOH 4 – Baca file menggunakan while loopEXAMPLE 5 – Kontrol aliran loop dengan Break dan Continue2. Sampai Kesimpulan Loop1. While loop

Below adalah sintaks while loop. Perulangan dimulai dengan kata kunci “sementara” diikuti dengan kondisi yang harus dievaluasi kebenarannya. Antara blok do dan done adalah tempat penempatan kode yang akan diulang sebanyak N kali.

while [[ condition ]] do Command 1 Command 2 .... Command 3 done

EXAMPLE 1 – Evaluate and iterate

Perhatikan contoh di bawah ini . Di sini saya telah membuat variabel “NUM=5” dan kondisi saya ($NUM -ne 0) adalah, loop akan dijalankan jika variabel NUM tidak sama dengan zero.

$ NUM=5 while [[ $NUM -ne 0 ]] do printf "Nilai NUM = $NUM n" ((--NUM)) done

Anda harus menggunakan penghitung untuk menambah atau mengurangi nilai yang disimpan dalam variabel saat bekerja dengan while loop. Jika tidak, itu akan menjadi loop tak terbatas dan NUM akan selalu disetel ke lima. Di sini saya mengurangi nilai NUM di setiap iterasi dengan menjalankan ((–NUM)), jadi ketika variabel NUM saya disetel ke nol, loop exit.

((++NUM)) → Increment NUM variable by 1, mirip dengan menjalankan NUM=$(( $NUM + 1 )) ((--NUM)) → Kurangi variabel NUM dengan 1, mirip dengan menjalankan NUM=$(( $NUM - 1 ))

EXAMPLE 2 – Infinite loops

An infinite loop adalah di mana kondisi Anda selalu dievaluasi ke true dan loop tidak akan pernah keluar.

Untuk membuat infinite loop, Anda dapat menggunakan kata kunci true bash-builtin. Juga, gunakan perintah “sleep” saat menguji infinite loop yang akan memberi Anda kendali dalam menghentikan skrip. Jika tidak, layar Anda akan dibanjiri dengan hasil pengguliran cepat.

$ NUM=0 while true do printf "Nilai NUM = $NUM n " ((++NUM)) sleep 2 done

CONTOH 3 – Pemisah bidang internal (IFS)

IFS adalah variabel shell khusus yang memutuskan bagaimana batasan kata Anda ditangani. Secara default, IFS diatur ke spasi, tab, dan karakter baris baru. Buka terminal dan jalankan perintah berikut:

$ var1="foo:bar foo bar"
$ for val in $var1 do echo $val done 

Lihat hasilnya. Perulangan for adalah iterasi pada string dan IFS yang menentukan batas kata dan menganggap ruang sebagai pemisah bidang.

Sekarang jalankan kembali kode di bawah ini. Di sini IFS diatur ke titik dua.

$ var1="foo:bar foo bar"
$ IFS=":"
$ for val in $var1 do echo $val done

Dari output di atas, Anda dapat melihat bahwa pemisah bidang khusus titik dua digunakan sebagai batas kata. Anda dapat mengatur IFS kembali ke status default dengan menjalankan perintah unset.

$ unset IFS

EXAMPLE 4 – Baca file menggunakan while loop

Perulangan while direkomendasikan ketika Anda ingin membaca file baris demi baris dan memprosesnya.

Buat file baru bernama test.txt menggunakan konten berikut. Ada baris kosong setelah baris 2 untuk menunjukkan perilaku bagaimana baris kosong ditangani.

14:00 Brighton v Leicester 14:00 West Ham v Man Utd 16:30 Spurs v Chelsea

Kami akan menggunakan perintah read yang menerima input dari redirection dan simpan dalam variabel bersama dengan operator pengalihan input di mana nama file akan diarahkan ke loop sementara. Perintah read akan menggunakan IFS default untuk mengatur batas pemisahan kata.

$ saat membaca baris do echo $line done < test.txt

Dalam contoh di atas, file test.txt diarahkan ke loop while dan perintah read membaca baris demi baris dan menyimpannya dalam variabel “garis” dan diproses lebih lanjut dalam loop. Baris kosong tidak dilewati saat Anda mengikuti metode ini dan ini bukanlah perilaku yang mungkin Anda inginkan. Jadi, Anda harus secara eksplisit membuat baris kosong untuk dilewati.

Ada beberapa opsi untuk memangkas baris kosong dari file input. Anda dapat menggunakan sed, awk, dan pernyataan kondisional, dll. Saya lebih suka menggunakan awk dan sed untuk membersihkan baris kosong sebelum mengulangnya menggunakan while loop.

# MENGGUNAKAN SED $ sed -i '/^[[:space: ]]*$/d' test.txt 14:00 Brighton v Leicester 14:00 West Ham v Man Utd 16:30 Spurs v Chelsea
# MENGGUNAKAN AWK $ awk 'NF' test.txt

Seperti yang terlihat pada contoh sebelumnya, Anda dapat memodifikasi IFS tergantung pada bagaimana Anda ingin membaca file Anda. Misalnya, jika Anda menangani file CSV maka pembatas dapat diatur ke koma. Saya telah memodifikasi file input yang sama menjadi dalam format CSV.

14:00,Brighton,Leicester 14:00,West Ham,Man Utd 16:30,Spurs,Chelsea

Dalam contoh di bawah ini, IFS diatur ke koma (IFS=”, “) dan setiap field akan disimpan dalam variabel terpisah (time, team1, team2).

while IFS="," read time team1 team2 do echo "$team1 is playing against $team2 at $time" done < test.txt

EXAMPLE 5 – Kontrol aliran loop dengan Break dan Continue

Jika Anda telah membaca artikel bash for loop kami, Anda mungkin tahu untuk apa break dan continue digunakan. Baik break dan continue adalah kata kunci bawaan bash yang akan membantu Anda mengontrol aliran loop Anda.

Kata kunci “break” akan sepenuhnya keluar dari loop dan meneruskan kontrol ke perintah berikutnya dalam skrip. Dalam contoh di bawah ini. Ketika NUM sama dengan tiga, loop akan keluar dengan perintah break.

$ NUM=5 sementara [[ $NUM -ne 0 ]] melakukan printf "Value of NUM = $NUM n" if [[ $NUM -eq 3 ]] lalu break fi ((--NUM)) done

Kata kunci “continue” akan melewati iterasi saat ini dan mengembalikan kontrol ke loop while dan memulai iterasi berikutnya.

$ NUM=0 while [[ $NUM -lt 5 ]] lakukan ((++NUM)) if [[ $NUM -eq 3 ]] kemudian lanjutkan fi printf "Nilai NUM = $NUM n" done
  1. Sampai Loop

    Perulangan sampai adalah kebalikan dari perulangan while. Perulangan while mengevaluasi kondisi true untuk mengeksekusi blok kode dan perulangan hingga mengevaluasi kondisi false untuk perulangan yang akan dieksekusi.

    Sintaksnya sama dengan perulangan while tetapi bukan kata kunci while, hingga will be used.

until [[ kondisi ]] lakukan Command 1 Command 2 .... Command 3 done

Dari contoh di bawah, Anda dapat melihat sampai loop mengevaluasi variabel NUM lebih besar dari sama dengan lima. Itu salah karena NUM disetel ke nol dan akan bertambah pada iterasi berikutnya menggunakan ((++NUM)). Jadi ketika NUM sama dengan lima kondisi dievaluasi benar dan sampai loop akan berhenti mengeksekusi.
$ NUM=0

$ hingga [[ $NUM -ge 5 ]] do echo $NUM ((++NUM)) done

Untuk membuat infinite loop, Anda dapat menggunakan kata kunci “false”.
$ NUM=0

$ hingga false do echo $NUM ((++NUM)) done

Untuk mengontrol aliran loop, Anda dapat menggunakan kata kunci break dan continue seperti yang ditunjukkan pada bagian while loop di atas.
Conclusion

Dalam artikel ini, kita telah melihat bagaimana menggunakan while loop dan hingga loop dalam skrip bash. Sampai loop paling jarang digunakan dibandingkan dengan for dan while loop tetapi itu untuk memutuskan skrip Anda dan jenis loop apa yang diperlukan. Nyaman dalam menggunakan ketiga loop.

Jika Anda memiliki pertanyaan atau umpan balik, jangan ragu untuk memberi tahu kami melalui bagian komentar di bawah.

Baca yang terkait:
Bash Scripting – Fungsi Dijelaskan Dengan ContohBash Scripting – Variabel Dijelaskan Dengan ContohBash Perintah Gema Dijelaskan Dengan Contoh Di LinuxBash Heredoc Tutorial Untuk PemulaPengalihan Bash Dijelaskan Dengan ContohCara Mengulangi Perintah Sampai Berhasil Di LinuxPerbedaan Antara Mendefinisikan Variabel Bash Dengan Dan Tanpa Ekspor