Bash Scripting – Untuk Loop Dijelaskan Dengan Contoh

In Bash shell scripting, Loops berguna untuk mengotomatisasi tugas yang berulang. Ketika Anda harus mengulang tugas N beberapa kali dalam skrip Anda, loop harus digunakan. Ada tiga jenis loop yang didukung di bash.
For loopWhile loopUntil loop
Ketiga loop memiliki tujuan yang sama untuk mengulang tugas sebanyak N kali ketika suatu kondisi terpenuhi tetapi dengan perbedaan dalam cara mereka didefinisikan dan digunakan untuk mencapai hasil.

Artikel ini akan fokus pada “for loop” dalam skrip Bash. Kita akan belajar tentang dua loop lainnya dalam panduan berikutnya.
Contents
Untuk sintaks loopContoh 1 – Bekerja dengan daftar itemContoh 2 – Bekerja dengan rentangContoh 3 – Menjalankan perintahContoh 4 – Loop over elemen arrayContoh 5 – Gaya C untuk sintaks loopContoh 6 – Break, Continue pernyataan penggunaanContoh 7 – Penggunaan pernyataan yang benarKesimpulanUntuk sintaks loop

Memahami sintaks sangat penting sebelum Anda menulis NAMA untuk loop.

for pertama Anda di [ LIST OF ITEMS ] lakukan Perintah 1 Perintah 2 ..... Perintah N selesai 

Mari kita uraikan dan lihat apa itu tidak.
Mulai dengan kata kunci “untuk” diikuti dengan nama variabel. Kata kunci “dalam” mendapatkan daftar item dan menyimpannya dalam variabel untuk setiap iterasi. Kata kunci “lakukan” dan “selesai” menandai awal dan akhir blok loop dan perintah harus ditulis dalam do dan done. Tidak ada aturan lekukan yang ketat tetapi untuk keterbacaan yang lebih baik gunakan 2 spasi atau tab (4). Konsisten dalam menggunakan spasi atau tab di seluruh skrip Anda.
Anda juga dapat membuat satu baris untuk loop. Buat loop for di terminal dan tekan tombol panah atas dan Anda akan melihat bash secara otomatis mengubahnya menjadi satu baris loop.

for NAME di [ LIST OF ITEMS]; melakukan PERINTAH; done

Contoh 1 – Bekerja dengan daftar item

Mari kita mulai dengan contoh sederhana.

Dari bagian sebelumnya, Anda mungkin telah memahami bahwa for loop menerima daftar item. Daftar item bisa apa saja seperti string, array, integer, range, output perintah, dll.

Buka terminal dan jalankan potongan kode berikut.

N=1 for val di Welcome To Ostechnix do echo "Iteration $N → $val " ((++N)) done

Mari kita uraikan.
“Selamat datang di Ostechnix” adalah daftar item yang diteruskan ke loop for dan setiap kata akan diambil sebagai iterasi terpisah dan disimpan dalam variabel (val).Variabel bisa disebut apa saja. Di sini saya beri nama val. Ada tiga item dalam daftar sehingga akan ada tiga iterasi di for loop dan setiap kali nilai variabel val dicetak. Perintah ((++N)) akan bertindak sebagai penghitung dan menambah nilai variabel N sehingga dapat dicetak dalam pernyataan echo.
Sekarang setelah menjalankan perintah for loop di atas tekan tombol panah atas dari terminal dan Anda dapat melihat multi-baris untuk loop diubah menjadi satu baris untuk satu loop .
Contoh 2 – Bekerja dengan ranges

Anda mungkin ingin menjalankan for loopN beberapa kali, untuk itu, Anda dapat menggunakan generator urutan bawaan bash “{x..y[..incr]}” yang akan menghasilkan urutan angka .
X = Nilai Integer AwalY = Mengakhiri Integer valueIncr = Nilai Integer opsional yang melakukan penambahan integers
Misalkan Anda ingin menjalankan loop lima kali maka Anda dapat menggunakan snippet.

for rng berikut di {1..5} do echo "Value is == $rng" done

Anda juga dapat menggunakan parameter tambahan opsional yang akan melakukan langkah-wis e kenaikan.

Lihatlah cuplikan di bawah ini di mana kenaikan tiga diberikan. Ini akan menghasilkan urutan dari satu dan melakukan langkah peningkatan tiga sampai nilai akhir ten.

for rng1 di {1..10..3} do echo "Value is == $rng1" done

Example 3 – Menjalankan perintah

Anda dapat menjalankan apa saja perintah yang memperoleh daftar item yang akan diproses oleh for loop. Perintah harus diapit dengan tanda centang ““” atau tanda kurung “$()”.

Pada contoh di bawah ini, saya menjalankan perintah yang akan mendapatkan ID proses dan memfilter lima proses terakhir. Untuk loop sekarang akan beralih melalui setiap proses ID.

for daftar di $(ps -ef | awk {' print $2 '} | tail -n 5) do echo $list done

Example 4 – Loop over elemen array

Dalam skenario waktu nyata, Anda akan melakukannya simpan beberapa nilai dalam array dan coba perulangan array untuk diproses lebih lanjut.

Sebelum memahami cara melakukan iterasi melalui array, Anda harus memahami perilaku dua variabel khusus ( [dilindungi email] dan $*). Keduanya adalah variabel khusus yang digunakan untuk mengakses semua elemen dari sebuah array.

Jalankan potongan kode berikut di terminal. Sebuah array X dibuat dan ketika saya mencoba untuk mencetak semua nilai ($X) seperti bagaimana saya mencetak variabel, itu hanya mengembalikan nilai pertama dari array.

$ X=( 16 09 2021 "Thursday Third Week" )

$ echo $X16
Untuk mengakses semua elemen dalam larik, Anda harus menggunakan [email protected] atau $*. Sintaks untuk mengakses nilai array adalah sebagai berikut.

$ echo ${X[@]}16 09 2021 Kamis Third Week
$ echo ${X[*]}16 09 2021 Kamis Third Week

Now gunakan ini dengan for loop untuk mengulangi array values.

X=( 16 09 2021 "Thursday Third Week" ) untuk item dalam ${X[@]} do echo $items done

Lihat output di atas. Output ini tampaknya salah, karena string (Kamis Minggu Ketiga) di dalam array harus dianggap sebagai nilai tunggal. Namun di sini setiap item diperlakukan sebagai item terpisah.

Ini adalah perilaku default saat Anda menggunakan [email protected] atau $. Untuk mengatasinya, sertakan variabel perluasan array ([email protected] atau $) dalam tanda kutip ganda.

for item di "${X[@]}" do echo $items done

Ketika Anda menggunakan tanda kutip ganda, [email protected] dan $ * berperilaku berbeda. Sementara [dilindungi email] memperluas larik ke setiap item dalam seperti larik seperti yang ditunjukkan pada contoh di atas, $* akan memperluas seluruh larik sebagai satu nilai.

for item di "${X[*]}" do echo $items done

Heads Up: Baik [dilindungi email] dan $* berperilaku sama kecuali jika diapit dengan tanda kutip ganda. Cobalah untuk menghindari $* kecuali jika diperlukan.
Example 5 – Gaya C untuk sintaks loop

Bash juga menawarkan gaya c untuk sintaks loop. Jika dari latar belakang bahasa C, maka sintaks ini tidak akan baru bagi Anda.

Alih-alih mengulangi daftar, Anda akan mengevaluasi suatu kondisi dan jika kondisinya benar, perintah dalam loop akan dieksekusi.

Ada tiga parameter yang harus Anda pahami dalam sintaks ini.
Variable – Variabel diinisialisasi hanya sekali ketika loop dipicu.Kondisi – Kondisi harus benar untuk loop yang akan dieksekusi jika tidak loop tidak akan berjalan.Counter – Ini akan menambah variabel value.
Setiap parameter harus dipisahkan dengan titik koma (;) dan harus diapit dalam tanda kurung ganda seperti yang ditunjukkan di bawah ini.

for (( variabel; kondisi; counter )) lakukan Perintah 1 Perintah 2 Perintah N done

Perhatikan contoh tahun kabisat di bawah ini .
Variabel YEAR=2010 akan diinisialisasi terlebih dahulu. Kondisi YEAR