Menggunakan loop 'sementara' dalam skrip Bash untuk mengulangi perintah.
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 ketika
lingkaran di Bash.
pengantar
Itu ketika
loop di Bash digunakan untuk mengeksekusi perintah (perintah yang dieksekusi) beberapa kali berdasarkan output dari perintah lain (perintah kondisi). Perintah yang dieksekusi akan terus berjalan hingga perintah kondisi berjalan dengan sukses (yaitu, mengembalikan status 0. Perintah apa pun di Linux mengembalikan 0 untuk keberhasilan dan bilangan bulat bukan nol untuk kegagalan).
Jika ada beberapa perintah kondisi, pernyataan hanya mempertimbangkan status perintah terakhir dalam daftar, yaitu, loop dijalankan hingga perintah terakhir dalam daftar berhasil dijalankan.
Sintaks Umum
Sintaks umum untuk ketika
loop di Bash adalah:
saat selesai
Daftar perintah eksekusi akan terus berjalan sampai perintah terakhir dalam daftar perintah kondisi berjalan dengan sukses dan keluar dengan status 0. Dalam iterasi, ketika perintah kondisi terakhir gagal, loop keluar.
Pengguna dapat menentukan file yang dapat dieksekusi dalam daftar perintah. Ini bisa berupa program Linux standar atau program atau skrip pengguna khusus. Setiap perintah harus berada pada baris baru atau dipisahkan oleh titik koma pada baris yang sama.
Mari kita lihat beberapa contoh.
Perulangan sampai variabel memiliki nilai tertentu: Loop berikut dijalankan hingga nilai variabel x
tidak sama dengan 10.
x=0 while [[ $x -ne 10 ]] lakukan echo $x ((x++)) selesai
Dalam setiap iterasi, kami memeriksa apakah nilai x adalah 10. Nilai tersebut diperiksa menggunakan tes
memerintah. [[ Ekspresi ]]
adalah sintaks untuk perintah pengujian (Lihat tes pria
). Di sini karena kita menggunakan -ne
operator (yang merupakan singkatan dari 'tidak sama dengan'), perintah tes mengembalikan 0, yaitu sukses, jika nilai x bukan 10, dan mengembalikan nilai bukan nol, yaitu, gagal jika nilai x adalah 10.
Kemudian di dalam lakukan... selesai
blok, kami mencetak nilai x dan menambahnya. Setelah nilai x adalah 10, perintah pengujian mengembalikan status bukan nol, dan loop keluar.
Catatan: Variabel indeks yang akan digunakan dalam while loop harus diinisialisasi baik sebelum loop while atau dalam perintah kondisi, sebagai lawan dari for loop, yang memungkinkan untuk menginisialisasi variabel secara implisit.
Dengan beberapa perintah kondisi: Loop berikut membuat 5 direktori bernama dir0, dir1, ... dir4
.
z=0 while echo "Daftar file:" ls -l [[ $z -ne 5 ]] do echo "Membuat dir$z..." mkdir dir$z ((z++)) selesai
Perintah pertama echo "Daftar file:"
dan ls -l
akan mengeksekusi sekali sepenuhnya; keberhasilan atau kegagalan mereka tidak berdampak apa pun pada berapa lama loop akan berjalan.
Kemudian perintah tes untuk memeriksa nilai variabel z akan dijalankan. Hingga nilai z bukan 5, perintah pengujian mengembalikan status sukses, dan karenanya loop terus berjalan. Perintah kondisi dan perintah yang dieksekusi tetap berjalan secara berurutan. Di sini, untuk setiap iterasi, pertama-tama akan menjalankan perintah echo dan perintah ls dalam kondisi dan kemudian perintah kondisi ke-3 memeriksa nilai z. Jika bukan 5, ia memasuki loop dan menjalankan perintah yang diberikan.
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.
x=0 while [[ $x -ne 10 ]] do if [[ $x -eq 5 ]] break fi echo $x ((x++)) done
Perulangan while di atas akan mencetak angka dari 0 sampai 4. Kemudian ketika nilai i adalah 5 maka akan keluar dari perulangan. Ini adalah penggunaan khusus ketika sebuah loop akan keluar ketika sebuah perintah memberikan output tertentu.
Lanjutkan Pernyataan untuk Melewati Iterasi Secara Bersyarat
Bash juga memiliki melanjutkan
pernyataan, untuk melewati bagian yang tersisa dari iterasi dalam satu lingkaran jika kondisi tertentu terpenuhi.
x=0 while [[ $x -ne 10 ]] do if [[ $x -eq 5 ]] continue fi echo $x ((x++)) done
Loop di atas akan mencetak angka dari 0 hingga 10, kecuali 5, karena selama iterasi x=5
ada pernyataan continue, yang akan melewatkan sisa kode dalam loop di awal dengan iterasi x=6
.
Menggunakan Loop: Script dan Command Line
Sintaks loop dapat digunakan di Bash shell secara langsung atau dari file skrip shell yang dapat dieksekusi. Mirip dengan untuk
dan ketika
loop, sekali dan ketika
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 ketika
lingkaran, mirip dengan untuk
dan sampai
loop adalah fitur penting dalam skrip Bash. Perulangan while memiliki kegunaan yang sama dengan perulangan hingga, kecuali bahwa perulangan ini digunakan untuk menjalankan perintah/program alternatif ketika program tertentu berhasil. Ini sering menemukan kegunaannya dalam skrip jaringan tingkat lanjut, skrip pemeliharaan sistem, dll.