Menggunakan gelung 'semasa' dalam skrip Bash untuk mengulangi arahan.
Bash (Bourne Again Shell) ialah gesaan arahan shell dan bahasa skrip dalam sistem pengendalian GNU/Linux. Ia adalah cangkerang lalai untuk kebanyakan pengedaran Linux.
Seperti kebanyakan bahasa skrip, Bash menyediakan sintaks gelung untuk mengulangi tugas yang sama beberapa kali. Dalam artikel ini kita akan belajar cara menggunakan sementara
gelung dalam Bash.
pengenalan
The sementara
gelung dalam Bash digunakan untuk melaksanakan perintah (perintah yang dilaksanakan) beberapa kali berdasarkan output perintah lain (perintah keadaan). Arahan yang dilaksanakan akan terus berjalan sehingga perintah syarat berjalan dengan jayanya (iaitu, mengembalikan status 0. Sebarang arahan dalam Linux mengembalikan 0 untuk kejayaan dan integer bukan sifar untuk kegagalan).
Jika terdapat berbilang arahan keadaan, pernyataan itu hanya mempertimbangkan status perintah terakhir dalam senarai, iaitu, gelung dilaksanakan sehingga perintah terakhir dalam senarai berjalan dengan jayanya.
Sintaks Umum
Sintaks umum untuk sementara
gelung dalam Bash ialah:
semasa lakukan
Senarai arahan laksana akan terus berjalan sehingga perintah terakhir dalam senarai arahan syarat berjalan dengan jayanya dan keluar dengan status 0. Dalam lelaran, apabila perintah syarat terakhir gagal, gelung keluar.
Pengguna boleh menentukan mana-mana fail boleh laku dalam senarai arahan. Ia boleh menjadi program Linux standard atau program atau skrip pengguna tersuai. Setiap arahan hendaklah sama ada pada baris baharu atau dipisahkan oleh koma bertitik pada baris yang sama.
Mari kita lihat beberapa contoh.
Menggelung sehingga pembolehubah mempunyai nilai tertentu: Gelung berikut dilaksanakan sehingga nilai pembolehubah x
tidak sama dengan 10.
x=0 manakala [[ $x -ne 10 ]] lakukan echo $x ((x++)) selesai
Dalam setiap lelaran, kami menyemak sama ada nilai x ialah 10. Nilai sedang disemak menggunakan ujian
perintah. [[ Ungkapan ]]
ialah sintaks untuk arahan ujian (Lihat ujian lelaki
). Di sini kerana kami menggunakan -ne
operator (yang bermaksud 'tidak sama dengan'), arahan ujian mengembalikan 0, iaitu kejayaan, jika nilai x bukan 10, dan ia mengembalikan nilai bukan sifar, iaitu, kegagalan jika nilai x ialah 10.
Kemudian di dalam buat...selesai
blok, kami mencetak nilai x dan menambahnya. Sebaik sahaja nilai x ialah 10, arahan ujian mengembalikan status bukan sifar, dan gelung keluar.
Nota: Pembolehubah indeks yang akan digunakan dalam gelung while hendaklah dimulakan sama ada sebelum gelung while atau dalam arahan keadaan, berbanding gelung untuk, yang membolehkan untuk memulakan pembolehubah secara tersirat.
Dengan berbilang arahan keadaan: Gelung berikut mencipta 5 direktori bernama dir0, dir1, ... dir4
.
z=0 sambil echo "Senarai fail:" ls -l [[ $z -ne 5 ]] lakukan echo "Mencipta dir$z..." mkdir dir$z ((z++)) selesai
Perintah pertama echo "Senarai fail:"
dan ls -l
akan melaksanakan sekali sepenuhnya; kejayaan atau kegagalan mereka tidak mempunyai kesan apa-apa pada berapa lama gelung akan berjalan.
Kemudian arahan ujian untuk menyemak nilai pembolehubah z akan dilaksanakan. Sehingga nilai z bukan 5, arahan ujian mengembalikan status kejayaan, dan oleh itu gelung terus berjalan. Perintah keadaan dan perintah yang dilaksanakan terus berjalan dengan teratur. Di sini, untuk setiap lelaran, ia mula-mula menjalankan perintah gema dan perintah ls dalam keadaan dan kemudian perintah syarat ke-3 menyemak nilai z. Jika bukan 5, ia memasuki gelung dan melaksanakan arahan yang diberikan.
Rehat dan Teruskan
Penyata Rehat untuk Keluar Bersyarat
Kita juga boleh menggunakan pernyataan bersyarat jika
di dalam gelung. The jika
pernyataan boleh digunakan dengan a rehat
pernyataan, untuk keluar bersyarat daripada gelung.
x=0 manakala [[ $x -ne 10 ]] lakukan jika [[ $x -eq 5 ]] break fi echo $x ((x++)) selesai
Gelung while di atas akan mencetak nombor dari 0 hingga 4. Kemudian apabila nilai i ialah 5, ia akan keluar dari gelung. Ini adalah kegunaan khusus apabila gelung akan dikeluarkan apabila arahan memberikan output tertentu.
Teruskan Pernyataan untuk Melangkau Lelaran Secara Bersyarat
Bash juga mempunyai a teruskan
pernyataan, untuk melangkau baki bahagian lelaran dalam gelung jika syarat tertentu dipenuhi.
x=0 manakala [[ $x -ne 10 ]] lakukan jika [[ $x -eq 5 ]] teruskan fi echo $x ((x++)) selesai
Gelung di atas akan mencetak nombor dari 0 hingga 10, kecuali 5, kerana semasa lelaran x=5
terdapat pernyataan continue, yang akan melangkau seluruh kod dalam gelung pada permulaan dengan lelaran x=6
.
Menggunakan Gelung: Skrip dan Baris Perintah
Sintaks gelung boleh digunakan dalam shell Bash secara langsung atau daripada fail skrip shell boleh laku. Sama seperti untuk
dan sementara
gelung, sekali an sementara
sintaks gelung dimasukkan pada shell, shell meneruskan gesaan untuk membenarkan pengguna meneruskan arahan untuk digelung.
Atau pengguna boleh menyimpan ini dalam fail skrip dan melaksanakan fail skrip.
The #!/bin/bash
pada permulaan menentukan penterjemah untuk digunakan apabila fail dilaksanakan. Walaupun Bash ialah shell yang paling biasa digunakan pada masa kini, sesetengah pengguna lebih suka shell seperti itu zsh
, yang harus dinyatakan sebagai ganti bash pada permulaan fail ini.
Untuk memberi kebenaran laksana untuk fail ini, jalankan:
chmod +x test.sh
Akhirnya, untuk melaksanakan fail, jalankan:
./test.sh
Kesimpulan
The sementara
gelung, serupa dengan untuk
dan sehingga
gelung ialah ciri penting dalam skrip Bash. Walaupun gelung mempunyai penggunaan yang sama seperti gelung sehingga, kecuali ia digunakan untuk menjalankan arahan/program alternatif apabila program tertentu berjaya. Ini sering mendapati kegunaannya dalam skrip rangkaian lanjutan, skrip penyelenggaraan sistem, dsb.