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.