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.