Cara Menulis Bash WHILE-Loops

Perintah, Sintaks, dan Contoh

Anda dapat menjalankan urutan perintah dengan menulisnya ke dalam file skrip dan kemudian menjalankannya.

File skrip hanyalah sebuah file teks, biasanya dengan ekstensi file .SH, yang berisi urutan instruksi yang juga bisa dieksekusi dari baris perintah ( shell ).

Sedangkan Contoh Loop

Di bawah ini adalah contoh dari loop sementara. Ketika dijalankan, file skrip ini akan mencetak angka 1 hingga 9 pada layar. Sementara-pernyataan memberi Anda lebih banyak fleksibilitas untuk menentukan kondisi pengakhiran dari loop-for .

#! / bin / bash count = 1 ketika [$ count -le 9] lakukan echo "$ count" sleep 1 ((hitungan ++)) selesai

Misalnya, Anda dapat membuat skrip sebelumnya menjadi loop tak terbatas dengan menghilangkan pernyataan kenaikan "((hitung ++))":

#! / bin / bash count = 1 ketika [$ count -le 9] lakukan echo "$ count" sleep 1 selesai

Pernyataan "sleep 1" menghentikan eksekusi selama 1 detik pada setiap iterasi. Gunakan pintasan keyboard Ctrl + C untuk mengakhiri proses.

Anda juga dapat membuat loop tanpa batas dengan meletakkan tanda titik dua sebagai kondisinya:

#! / bin / bash count = 1 ketika: lakukan echo "$ count" sleep 1 ((count ++)) selesai

Untuk menggunakan beberapa kondisi dalam while-loop, Anda harus menggunakan notasi braket double square:

count = 1 done = 0 ketika [[$ count -le 9] && [$ done == 0]] lakukan echo "$ count" sleep 1 ((hitung ++)) jika [$ count == 5]; lalu $ selesai = 1 fi selesai

Dalam skrip ini, variabel "selesai" diinisialisasi ke 0 dan kemudian diatur ke 1 ketika hitungan mencapai 5. Kondisi loop menyatakan bahwa loop sementara akan terus berlanjut selama "hitungan" kurang dari sembilan dan "selesai" sama ke nol. Oleh karena itu loop keluar ketika hitungan sama dengan 5.

"&&" artinya logis "dan" dan "||" berarti logis "atau".

Notasi alternatif untuk kata sambung "dan" dan "atau" dalam kondisi adalah "-a" dan "-o" dengan tanda kurung tunggal. Kondisi di atas:

[[$ count -le 9] && [$ selesai == 0]]

... bisa ditulis ulang sebagai:

[$ count -le 9] -a [$ selesai == 0]

Membaca file teks biasanya dilakukan dengan loop sementara. Dalam contoh berikut, skrip bash membaca isi baris demi baris file bernama "inventory.txt:"

FILE = inventory.txt exec 6

Baris pertama memberikan nama file input ke variabel "FILE". Baris kedua menyimpan "input standar" dalam deskriptor file "6" (bisa ada nilai antara 3 dan 9). Hal ini dilakukan agar "input standar" dapat dikembalikan ke deskriptor file "0" di akhir skrip (lihat pernyataan "exec 0 Di baris ke-3, file input ditugaskan ke deskriptor file" 0, "yang digunakan untuk input standar.Laporan "baca" kemudian membaca sebuah baris dari file pada setiap iterasi dan menugaskannya ke variabel "line1".

Untuk keluar sebelum waktunya, Anda dapat menggunakan pernyataan break seperti ini:

count = 1 done = 0 ketika [$ count -le 9] lakukan echo "$ count" sleep 1 ((hitung ++)) jika [$ count == 5] kemudian break fi selesai echo Selesai

Pernyataan break melompati eksekusi program ke akhir ketika loop dan mengeksekusi pernyataan yang mengikutinya. Dalam hal ini, pernyataan "echo Selesai."

Pernyataan terus, di sisi lain, hanya melewatkan sisa pernyataan loop sementara dari iterasi saat ini dan melompat langsung ke iterasi berikutnya:

count = 1 done = 0 ketika [$ count -le 9] lakukan sleep 1 ((hitung ++)) jika [$ count == 5] kemudian lanjutkan echo "hitungan $" selesai echo Selesai

Dalam hal ini, pernyataan "continue" dijalankan ketika variabel "count" mencapai 5. Ini berarti pernyataan berikutnya (echo "$ count") tidak dieksekusi pada iterasi ini (ketika nilai "hitungan" adalah 5).