Bagaimana Menulis Bash WHILE-Loops

Perintah, Sintaks dan Contoh

Anda boleh melaksanakan urutan perintah dengan menulisnya ke dalam fail skrip dan kemudian menjalankannya.

Fail skrip hanyalah fail teks, biasanya dengan sambungan fail .SH, yang mengandungi urutan arahan yang juga boleh dilaksanakan dari baris perintah ( shell ).

Sedangkan Contoh Loop

Berikut adalah contoh gelung sementara. Apabila dilaksanakan, fail skrip ini akan mencetak nombor 1 hingga 9 pada skrin. Kenyataan sementara memberi anda lebih banyak fleksibiliti untuk menentukan keadaan penamatan daripada gelung untuk .

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

Sebagai contoh, anda boleh membuat skrip sebelumnya gelung tak terhingga dengan tidak memasukkan pernyataan kenaikan "((hitung ++)":

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

Kenyataan "tidur 1" menjeda pelaksanaan selama 1 saat pada setiap lelaran. Gunakan pintasan papan kekunci Ctrl + C untuk menamatkan proses.

Anda juga boleh membuat gelung tak terhingga dengan meletakkan kolon sebagai syarat:

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

Untuk menggunakan pelbagai syarat dalam gelung sementara, anda perlu menggunakan notasi pendua persegi dua kali:

count = 1 done = 0 while [[$ count -le 9] && [$ done == 0]] lakukan echo "$ count" sleep 1 ((count ++)) jika [$ count == 5]; kemudian $ selesai = 1 selesai

Dalam skrip ini, pembolehubah "selesai" diasaskan kepada 0 dan kemudian ditetapkan kepada 1 apabila kiraan mencapai 5. Kondisi gelung menyatakan bahawa gelung sementara akan berterusan selagi "mengira" adalah kurang daripada sembilan dan "dilakukan" adalah sama kepada sifar. Oleh itu gelung keluar apabila kiraannya sama dengan 5.

"&&" bermaksud logik "dan" dan "||" bererti logik "atau".

Notasi alternatif untuk konjungsi "dan" dan "atau" dalam keadaan adalah "-a" dan "-o" dengan kurungan persegi tunggal. Keadaan di atas:

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

... boleh ditulis semula sebagai:

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

Membaca fail teks biasanya dilakukan dengan gelung sementara. Dalam contoh berikut, skrip bash membaca baris kandungan dengan baris fail bernama "inventory.txt:"

FILE = inventory.txt exec 6

Baris pertama memberikan nama fail input kepada pembolehubah "FILE". Baris kedua menyelamatkan "input standard" dalam deskriptor fail "6" (ia boleh menjadi nilai antara 3 dan 9). Ini dilakukan supaya "input standard" dapat dipulihkan kepada deskriptor fail "0" di akhir skrip (lihat pernyataan "exec 0") Dalam baris ke-3, fail input diberikan kepada deskriptor fail "0," yang digunakan untuk input standard. Pernyataan "baca" kemudian membaca baris dari fail pada setiap lelaran dan menyerahkannya kepada pembolehubah "line1".

Untuk keluar dari awal-gelung, anda boleh menggunakan kenyataan rehat seperti ini:

count = 1 done = 0 while [$ count -le 9] do echo "count count" sleep 1 ((count ++)) if [$ count == 5] then break fi done echo Finished

Kenyataan rehat melangkau pelaksanaan program hingga akhir sementara gelung dan melaksanakan sebarang kenyataan yang mengikutinya. Dalam kes ini, pernyataan "echo Finished."

Pernyataan yang berterusan, sebaliknya, melangkau hanya sisa pernyataan loop semasa lelaran semasa dan melompat terus ke lelaran seterusnya:

count = 1 done = 0 while [$ count -le 9] do sleep 1 ((count ++)) if [$ count == 5] then continue fi echo "$ count" done echo Finished

Dalam kes ini, pernyataan "berterusan" dilaksanakan apabila pembolehubah "dikira" mencapai 5. Ini bermakna pernyataan berikutnya (echo "$ count") tidak dilaksanakan pada lelaran ini (apabila nilai "count" adalah 5).