Bash 'Untuk' Loop: Tutorial dan Contoh

Bash (Bourne Again Shell) adalah prompt perintah shell dan bahasa scripting di sistem operasi GNU/Linux. Ini adalah shell default untuk sebagian besar distribusi Linux.

Seperti kebanyakan bahasa scripting, Bash menyediakan sintaks loop untuk mengulang tugas serupa beberapa kali. Pada artikel ini, kita akan belajar bagaimana menggunakan untuk lingkaran di Bash.

pengantar

Skrip Bash yang khas berisi serangkaian perintah yang akan dieksekusi satu demi satu. Variabel dapat digunakan untuk menyimpan string, nilai indeks integer, hasil dari suatu perintah, dll. Loop diperlukan ketika pengguna ingin menjalankan perintah tertentu beberapa kali. Ini adalah penggunaan khusus ketika output dari satu perintah dalam bentuk daftar, dan pada setiap hasil, dalam daftar, perintah kedua harus dijalankan.

Sintaks Umum

Sintaks umum untuk untuk loop di Bash adalah:

untuk di lakukan ... ... selesai

Di sini, adalah variabel Bash, yang harus merupakan nama variabel shell Linux yang valid, yaitu, nama tersebut berisi kombinasi huruf(az, AZ), angka (0-9) dan garis bawah ( _ ) dan harus dimulai dengan huruf atau sebuah garis bawah.

Itu adalah rentang khusus indeks bilangan bulat yang akan dilingkarkan atau daftar bilangan bulat atau string khusus. Itu juga dapat berisi perintah Linux lain, namun, output dari perintah tersebut harus dipisahkan oleh spasi atau karakter baris baru, yaitu, dapat diuraikan oleh Bash ke dalam daftar (Daftar di Bash pada dasarnya adalah kumpulan nilai yang dipisahkan oleh spasi atau baris baru ).

Perintah apa pun yang akan dieksekusi harus ditempatkan di dalam lakukan..selesai memblokir.

Mari kita lihat beberapa contoh sederhana.

Perulangan pada rentang nilai Integer: Kode berikut membuat direktori bernama dir1, dir2, dir3 hingga dir10.

untuk saya di {1..10} melakukan mkdir dir$i done

Perulangan pada daftar nilai tetap: Kode berikut mencetak setiap string atau integer dalam daftar tetap yang diberikan.

untuk saya di Halo 1 2 3 Sampai jumpa! lakukan echo $aku selesai

Perulangan pada output dari sebuah perintah: Kode berikut mengulang output dari ls dan mencetak nama setiap file dalam format yang diberikan.

untuk saya di `ls` lakukan echo "Nama file adalah $i" selesai

Sintaks berbasis ekspresi

Sintaks berbasis ekspresi yang mirip dengan bahasa pemrograman C juga dimungkinkan di Bash:

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

Di Sini, Ekspresi 1 adalah inisialisasi variabel indeks. Ekspresi 2 adalah kondisi ketika loop harus keluar; kondisi ini diperiksa di setiap iterasi. Ekspresi 3 menentukan kenaikan/penurunan/modifikasi nilai variabel indeks

Contoh berikut hanya mencetak nilai dari 0 hingga 4:

for ((i=0;i<5;i++)) lakukan echo $i done

Contoh berikut membuat loop tak terbatas, karena tidak ada ekspresi yang ditentukan:

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

Istirahat dan Lanjutkan

Pernyataan Break untuk Keluar Bersyarat

Kita juga dapat menggunakan pernyataan kondisional jika di dalam lingkaran. Itu jika pernyataan dapat digunakan dengan merusak pernyataan, untuk keluar bersyarat dari loop.

for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i; sudah selesai

Loop di atas akan mencetak angka dari 0 sampai 4. Kemudian ketika nilai i adalah 5, maka akan keluar dari loop. Ini adalah penggunaan khusus ketika sebuah loop akan keluar ketika sebuah perintah memberikan output tertentu. Misalnya, perulangan berikut terputus jika dan ketika menemukan file kosong.

untuk file di `ls` do flen=`wc -c $file` if [[ "$flen" = "0 $file" ]] then echo "$file is empty" break else echo $flen fi selesai 

Perintah wc -c mencetak jumlah baris dalam file . Ini mencetaknya dalam format , Misalnya, 10 tes.txt. Kami keluar dari loop ketika jumlah baris adalah 0, yaitu, file kosong.

Lanjutkan Pernyataan untuk Melewati Iterasi Secara Bersyarat

Mirip dengan C dan banyak bahasa pemrograman lainnya, bash juga memiliki melanjutkan pernyataan, untuk melewati bagian yang tersisa dari iterasi dalam satu lingkaran jika kondisi tertentu terpenuhi.

for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] lalu lanjutkan fi echo $i; selesai

Loop di atas akan mencetak angka dari 0 hingga 10, kecuali 5, karena selama iterasi saya = 5 ada pernyataan continue, yang akan melewatkan sisa kode dalam loop di awal dengan iterasi saya=6.

Dalam contoh berikut, kami mencetak jumlah baris dalam file, dan iterasi tertentu akan: melanjutkan jika itu adalah direktori dan bukan file.

untuk file di `ls` lakukan if [[ -d $file ]] lalu lanjutkan fi wc -c "$file" done

[[ -d $file ]] memeriksa apakah file tersebut adalah direktori. Jika ya, maka kita lompat ke file berikutnya, yaitu iterasi berikutnya. Jika bukan direktori, kami mencetak jumlah baris dalam file menggunakan toilet perintah, seperti yang ditunjukkan sebelumnya juga.

Menggunakan Loop: Script dan Command Line

Sintaks loop dapat digunakan di Bash shell secara langsung, atau dari file skrip shell. sekali untuk sintaks loop dimasukkan pada shell, shell melanjutkan prompt untuk membiarkan pengguna melanjutkan perintah yang akan diulang.

Atau pengguna dapat menyimpan ini dalam file skrip dan menjalankan file skrip.

Itu #!/bin/bash di awal menentukan penerjemah yang akan digunakan saat file dieksekusi. Meskipun Bash adalah shell yang paling umum digunakan saat ini, beberapa pengguna lebih memilih shell seperti zsh, yang harus ditentukan sebagai pengganti bash di awal file ini.

Untuk memberikan izin eksekusi untuk file ini, jalankan:

chmod +x test.sh

Akhirnya, untuk mengeksekusi file, Lari:

./test.sh

Kesimpulan

Itu untuk loop di Bash adalah fitur yang cukup sederhana tetapi digunakan di hampir setiap jenis skenario skrip yang kompleks. Mempelajarinya akan sangat membantu baik Anda pengguna Linux biasa atau mahir, atau mulai mempelajari otomatisasi untuk tugas Administrasi Sistem dan DevOps.