Gelung Bash 'Untuk': Tutorial dan Contoh

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 tugasan yang serupa beberapa kali. Dalam artikel ini, kita akan belajar cara menggunakan untuk gelung dalam Bash.

pengenalan

Skrip Bash biasa mengandungi satu siri arahan untuk dilaksanakan satu demi satu. Pembolehubah boleh digunakan untuk menyimpan rentetan, nilai indeks integer, hasil perintah, dll. Gelung diperlukan apabila pengguna ingin melaksanakan perintah tertentu beberapa kali. Ia adalah kegunaan khusus apabila output satu arahan adalah dalam bentuk senarai, dan pada setiap keputusan, dalam senarai, arahan kedua akan dijalankan.

Sintaks Umum

Sintaks umum untuk untuk gelung dalam Bash ialah:

kerana dalam melakukan ... ... selesai

Di sini, yang ialah pembolehubah Bash, yang mestilah nama pembolehubah shell Linux yang sah, iaitu, nama itu mengandungi gabungan huruf(az, AZ), nombor (0-9) dan garis bawah ( _ ) dan ia mesti bermula dengan sama ada huruf atau garis bawah.

The ialah sama ada julat tersuai indeks integer yang akan digelung atau senarai tersuai integer atau rentetan. Ia juga boleh mengandungi arahan Linux yang lain, walau bagaimanapun, output arahan tersebut mesti dipisahkan oleh ruang atau aksara baris baharu, iaitu, boleh dihuraikan oleh Bash ke dalam senarai (Senarai dalam Bash pada asasnya ialah koleksi nilai yang dipisahkan oleh ruang atau baris baharu ).

Mana-mana arahan yang hendak dilaksanakan mesti diletakkan di dalam buat..selesai blok.

Mari kita lihat beberapa contoh mudah.

Menggelung pada julat nilai Integer: Kod berikut mencipta direktori bernama dir1, dir2, dir3 sehingga dir10.

untuk saya dalam {1..10} lakukan mkdir dir$i selesai

Menggelung pada senarai nilai tetap: Kod berikut mencetak setiap rentetan atau integer dalam senarai tetap yang diberikan.

untuk saya dalam Hello 1 2 3 Bye! lakukan echo $i selesai

Menggelung pada output arahan: Kod berikut bergelung ke atas output ls dan mencetak nama setiap fail dalam format yang diberikan.

untuk i dalam `ls` lakukan echo "Nama fail ialah $i" selesai

Sintaks berasaskan ungkapan

Sintaks berasaskan ungkapan yang serupa dengan bahasa pengaturcaraan C juga boleh dilakukan dalam Bash:

untuk ((Ungkapan 1; Ungkapan 2; Ungkapan 3)) lakukan ... ... selesai

di sini, Ungkapan 1 ialah permulaan pembolehubah indeks. Ungkapan 2 ialah keadaan apabila gelung mesti keluar; keadaan ini disemak dalam setiap lelaran. Ungkapan 3 menentukan kenaikan/pengurangan/pengubahsuaian dalam nilai pembolehubah indeks

Contoh berikut hanya mencetak nilai dari 0 hingga 4:

untuk ((i=0;i<5;i++)) lakukan gema $i selesai

Contoh berikut mencipta gelung tak terhingga, kerana tiada ungkapan yang ditentukan:

untuk (( ; ; )) lakukan echo "Tekan Ctrl-C untuk berhenti" selesai

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.

untuk ((i=0;i<10;i++)) lakukan jika [[ $i -eq 5 ]] kemudian putuskan else echo $i; fi selesai

Gelung 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. Sebagai contoh, gelung berikut pecah jika dan apabila ia menemui fail kosong.

untuk fail dalam `ls` do flen=`wc -c $file` jika [[ "$flen" = "0 $file" ]] kemudian echo "$file is empty" break else echo $flen fi done 

Perintah itu wc -c mencetak bilangan baris dalam fail . Ia mencetaknya dalam format , sebagai contoh, 10 test.txt. Kami keluar dari gelung apabila bilangan baris adalah 0, iaitu fail kosong.

Teruskan Pernyataan untuk Melangkau Lelaran Secara Bersyarat

Sama seperti C dan banyak bahasa pengaturcaraan lain, bash juga mempunyai a teruskan pernyataan, untuk melangkau baki bahagian lelaran dalam gelung jika syarat tertentu dipenuhi.

untuk ((i=0;i<10;i++)) lakukan jika [[ $i -eq 5 ]] kemudian teruskan fi echo $i; selesai

Gelung di atas akan mencetak nombor dari 0 hingga 10, kecuali 5, kerana semasa lelaran i=5 terdapat pernyataan continue, yang akan melangkau seluruh kod dalam gelung pada permulaan dengan lelaran i=6.

Dalam contoh berikut, kami mencetak bilangan baris dalam fail, dan lelaran tertentu akan teruskan jika ia adalah direktori dan bukan fail.

untuk fail dalam `ls` lakukan jika [[ -d $file ]] kemudian teruskan fi wc -c "$file" selesai

[[ -d $fail ]] menyemak sama ada fail adalah direktori. Jika ya, maka kami melangkau ke fail seterusnya, iaitu lelaran seterusnya. Jika ia bukan direktori, kami mencetak bilangan baris dalam fail menggunakan wc perintah, seperti yang ditunjukkan sebelum ini juga.

Menggunakan Gelung: Skrip dan Baris Perintah

Sintaks gelung boleh digunakan dalam shell Bash secara langsung, atau daripada fail skrip shell. Sekali a untuk 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 untuk gelung dalam Bash adalah ciri yang cukup mudah tetapi ia digunakan dalam hampir setiap jenis senario skrip yang kompleks. Mempelajarinya sangat berkesan sama ada anda pengguna Linux biasa atau lanjutan, atau mula mempelajari automasi untuk tugasan Pentadbiran Sistem dan DevOps.