Pendahuluan
for
loop adalah fungsi pemrograman penting yang melewati daftar elemen. Untuk setiap elemen tersebut, for
loop melakukan serangkaian perintah. Perintah membantu mengulang proses sampai kondisi terminasi.
Baik Anda sedang menelusuri deretan angka atau mengganti nama file, for
loop dalam skrip Bash menyediakan cara mudah untuk membuat daftar item secara otomatis.
Tutorial ini menunjukkan cara menggunakan Bash for
loop dalam skrip.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354468.png)
Prasyarat
- Akses ke terminal/baris perintah (CTRL +ALT +B ).
- Editor teks, seperti Nano atau Vi/Vim.
- Terminologi pemrograman dasar.
Skrip Bash untuk Pengulangan
Gunakan for
loop untuk beralih melalui daftar item untuk melakukan perintah yang diinstruksikan.
Sintaks dasar untuk for
loop dalam skrip Bash adalah:
for <element> in <list>
do
<commands>
done
Elemen, daftar, dan perintah yang diuraikan melalui loop bervariasi tergantung pada kasus penggunaan.
Contoh Bash Untuk Perulangan
Di bawah ini adalah berbagai contoh for
loop dalam skrip Bash. Buat skrip, tambahkan kode, dan jalankan skrip Bash dari terminal untuk melihat hasilnya.
Item Perorangan
Iterasi melalui serangkaian elemen yang diberikan dan cetak masing-masing dengan sintaks berikut:
#!/bin/bash
# For loop with individual numbers
for i in 0 1 2 3 4 5
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354453.png)
Jalankan skrip untuk melihat output:
. <script name>
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354419.png)
Script mencetak setiap elemen dari daftar yang disediakan ke konsol.
Atau, gunakan string dalam daftar yang dipisahkan spasi:
#!/bin/bash
# For loop with individual strings
for i in "zero" "one" "two" "three" "four" "five"
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354433.png)
Simpan skrip dan jalankan dari terminal untuk melihat hasilnya.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354489.png)
Output mencetak setiap elemen ke konsol dan keluar dari loop.
Rentang
Alih-alih menulis daftar elemen individual, gunakan sintaks rentang dan tunjukkan elemen pertama dan terakhir:
#!/bin/bash
# For loop with number range
for i in {0..5}
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354447.png)
Skrip mengeluarkan semua elemen dari rentang yang disediakan.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354455.png)
Sintaks rentang juga berfungsi untuk huruf. Misalnya:
#!/bin/bash
# For loop with letter range
for i in {a..f}
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354450.png)
Skrip mengeluarkan huruf ke konsol dalam urutan menaik dalam rentang yang disediakan.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354574.png)
Sintaks rentang berfungsi untuk elemen dalam urutan menurun jika elemen awal lebih besar dari akhir.
Misalnya:
#!/bin/bash
# For loop with reverse number range
for i in {5..0}
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354549.png)
Output mencantumkan nomor dalam urutan terbalik.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354537.png)
Sintaks rentang berfungsi baik elemen bertambah atau berkurang.
Rentang dengan Peningkatan
Gunakan sintaks rentang dan tambahkan nilai langkah untuk melewati rentang dalam interval.
Misalnya, gunakan kode berikut untuk membuat daftar bilangan genap:
#!/bin/bash
# For loop with range increment numbers
for i in {0..10..2}
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354585.png)
Output mencetak setiap digit lainnya dari rentang yang diberikan.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354520.png)
Atau, ulangi dari sepuluh ke nol menghitung mundur dengan angka genap:
#!/bin/bash
# For loop with reverse range increment numbers
for i in {10..0..2}
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354537.png)
Jalankan skrip untuk mencetak setiap elemen lain dari rentang dalam urutan menurun.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354579.png)
Peningkatan pertukaran 2
untuk bilangan apa pun yang kurang dari jarak antara rentang untuk mendapatkan nilai untuk interval yang berbeda.
Perintah seq
seq
perintah menghasilkan urutan nomor. Parsing urutan dalam skrip Bash for
loop sebagai perintah untuk menghasilkan daftar.
Misalnya:
#!/bin/bash
# For loop with seq command
for i in $(seq 0 2 10)
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354539.png)
Output mencetak setiap elemen yang dihasilkan oleh seq
perintah.
seq
perintah adalah perintah historis dan bukan cara yang disarankan untuk menghasilkan urutan. Metode bawaan kurung kurawal lebih disukai dan lebih cepat.
Gaya-C
Skrip Bash memungkinkan tiga parameter gaya-C for
ekspresi kontrol loop. Tambahkan ekspresi di antara tanda kurung ganda sebagai berikut:
#!/bin/bash
# For loop C-style
for (( i=0; i<=5; i++ ))
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354578.png)
Ekspresi terdiri dari:
- Penginisialisasi (
i=0
) menentukan angka di mana loop mulai menghitung. - Kondisi berhenti (
i<=5
) menunjukkan kapan loop keluar. - Langkah (
i++
) menambah nilaii
sampai kondisi berhenti.
Pisahkan setiap kondisi dengan titik koma (;
). Sesuaikan ketiga nilai sesuai kebutuhan untuk kasus penggunaan Anda.
Terminal mengeluarkan setiap elemen, dimulai dengan nilai penginisialisasi.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354567.png)
Nilai meningkat dengan jumlah langkah, hingga kondisi berhenti.
Loop Tak Terbatas
for
. yang tak terbatas loop tidak memiliki kondisi yang ditetapkan untuk mengakhiri loop. Program berjalan tanpa henti karena kondisi akhir tidak ada atau tidak pernah terpenuhi.
Untuk menghasilkan for
infinite yang tak terbatas loop, tambahkan kode berikut ke skrip Bash:
#!/bin/bash
# Infinite for loop
for (( ; ; ))
do
echo "CTRL+C to exit"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354522.png)
Untuk menghentikan eksekusi skrip, tekan CTRL +C .
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354536.png)
Loop tak terbatas berguna saat program berjalan hingga kondisi tertentu terpenuhi.
Istirahat
Pernyataan break mengakhiri loop saat ini dan membantu keluar dari for
lingkaran awal. Perilaku ini memungkinkan keluar dari loop sebelum memenuhi kondisi yang dinyatakan.
Untuk mendemonstrasikan, tambahkan kode berikut ke skrip Bash:
#!/bin/bash
# Infinite for loop with break
i=0
for (( ; ; ))
do
echo "Iteration: ${i}"
(( i++ ))
if [[ i -gt 10 ]]
then
break;
fi
done
echo "Done!"
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354560.png)
Contoh menunjukkan cara keluar dari for
. yang tak terbatas loop menggunakan break
. Pernyataan Bash if membantu memeriksa nilai untuk setiap bilangan bulat dan memberikan break
kondisi. Ini menghentikan skrip ketika bilangan bulat mencapai nilai sepuluh.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354519.png)
Untuk keluar dari loop bersarang dan loop luar, gunakan break 2
.
Lanjutkan
continue
perintah mengakhiri iterasi loop saat ini. Program melanjutkan loop, dimulai dengan iterasi berikut. Sebagai ilustrasi, tambahkan kode berikut ke skrip Bash untuk melihat bagaimana continue
pernyataan berfungsi dalam for
lingkaran:
#!/bin/bash
# For loop with continue statement
for i in {1..100}
do
if [[ $i%11 -ne 0 ]]
then
continue
fi
echo $i
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354589.png)
Kode memeriksa angka antara satu dan seratus dan hanya mencetak angka yang habis dibagi sebelas.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354681.png)
if
bersyarat pernyataan memeriksa keterbagian, sedangkan continue
pernyataan melompati setiap angka yang memiliki sisa ketika dibagi dengan sebelas.
Array
Array menyimpan daftar elemen. for
loop menyediakan metode untuk menelusuri array demi elemen.
Misalnya, definisikan array dan loop melalui elemen dengan:
#!/bin/bash
# For loop with array
array=(1 2 3 4 5)
for i in ${array[@]}
do
echo "Element $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354751.png)
Output mencetak setiap elemen yang disimpan dalam array dari pertama hingga terakhir.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354716.png)
Bash for
loop adalah satu-satunya metode untuk beralih melalui elemen array individual.
Indeks
Saat bekerja dengan array, setiap elemen memiliki indeks.
Daftar melalui indeks array dengan kode berikut:
#!/bin/bash
# For loop with array indices
array=(1 2 3 4 5)
for i in ${!array[@]}
do
echo "Array indices $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354873.png)
Pengindeksan elemen dimulai dari nol. Oleh karena itu, elemen pertama memiliki indeks nol.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317354966.png)
Output mencetak angka dari nol hingga empat untuk larik dengan lima elemen.
Loop Bersarang
Untuk mengulang atau menghasilkan larik multidimensi, gunakan for
. bersarang loop.
Sebagai contoh, buat nilai desimal dari nol hingga tiga menggunakan loop bersarang:
#!/bin/bash
# Nested for loop
for (( i = 0; i <= 2; i++ ))
do
for (( j = 0 ; j <= 9; j++ ))
do
echo -n " $i.$j "
done
echo ""
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355090.png)
Kode melakukan hal berikut:
- Baris 1 memulai
for
loop di nol, bertambah satu, dan berakhir di dua, inklusif. - Baris 3 memulai
for
. bersarang lingkaran pada nol. Nilai bertambah satu dan berakhir dengan sembilan secara inklusif. - Baris 5 mencetak nilai dari
for
loop. Loop for bersarang melalui semua angka tiga kali, sekali untuk setiap nilai loop luar.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355165.png)
Output mencetak setiap kombinasi angka ke konsol dan memasuki baris baru ketika outr loop menyelesaikan satu iterasi.
String
Untuk mengulang kata-kata dalam sebuah string, simpan string tersebut dalam sebuah variabel. Kemudian, parsing variabel ke for
lingkaran sebagai daftar.
Misalnya:
#!/bin/bash
# For loop with string
strings="I am a string"
for i in ${strings}
do
echo "String $i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355296.png)
Loop berulang melalui string, dengan setiap kata menjadi elemen terpisah.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355299.png)
Output mencetak kata-kata individual dari string ke konsol.
File
for
loop dikombinasikan dengan pencarian kedekatan membantu membuat daftar atau mengubah file yang memenuhi kondisi tertentu.
Misalnya, daftar semua skrip Bash di direktori saat ini dengan for
lingkaran:
#!/bin/bash
# For loop with files
for f in *.sh
do
echo $f
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355363.png)
Script mencari melalui direktori saat ini dan mencantumkan semua file dengan .sh ekstensi.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355449.png)
Ulangi file atau direktori untuk secara otomatis mengganti nama atau mengubah izin untuk beberapa elemen sekaligus.
Pergantian Perintah
for
loop menerima substitusi perintah sebagai daftar elemen untuk diulang.
Contoh berikutnya menunjukkan cara menulis for
loop dengan substitusi perintah:
#!/bin/bash
# For loop with command substitution
list=`cat list.txt`
# Alternatively, use list=$(cat list.txt)
for i in $list
do
echo $i
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355504.png)
Komentar Bash menawarkan sintaks alternatif untuk substitusi perintah. Kode membaca konten list.txt file menggunakan cat
perintah dan menyimpan informasi ke variabel list
.
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355557.png)
Gunakan metode substitusi perintah untuk mengganti nama file dari daftar nama yang disimpan dalam file teks.
Catatan: Pelajari cara menggunakan perintah cat dan for loop untuk membaca file baris demi baris di Bash.
Argumen Baris Perintah
Gunakan for
loop untuk beralih melalui argumen baris perintah.
Kode contoh berikut menunjukkan cara membaca argumen baris perintah dalam for
lingkaran:
#!/bin/bash
# For loop expecting command line arguments
for i in [email protected]
do
echo "$i"
done
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355657.png)
Berikan argumen baris perintah saat Anda menjalankan skrip Bash.
Misalnya:
. <script name> foo bar
![](https://m.unixlinux.online/article/uploadfiles/202211/2022110317355740.png)
[email protected]
mengganti setiap argumen baris perintah ke dalam for
lingkaran.
Kesimpulan
Setelah mengikuti tutorial ini, Anda tahu cara menggunakan for
loop dalam skrip Bash untuk beralih melalui daftar.
Selanjutnya, pelajari cara menulis dan menggunakan fungsi Bash.