GNU/Linux >> Belajar Linux >  >> Linux

Script Bash untuk Loop Dijelaskan dengan Contoh

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.

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

Jalankan skrip untuk melihat output:

. <script name>

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

Simpan skrip dan jalankan dari terminal untuk melihat hasilnya.

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

Skrip mengeluarkan semua elemen dari rentang yang disediakan.

Sintaks rentang juga berfungsi untuk huruf. Misalnya:

#!/bin/bash
# For loop with letter range
for i in {a..f}
do
        echo "Element $i"
done

Skrip mengeluarkan huruf ke konsol dalam urutan menaik dalam rentang yang disediakan.

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

Output mencantumkan nomor dalam urutan terbalik.

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

Output mencetak setiap digit lainnya dari rentang yang diberikan.

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

Jalankan skrip untuk mencetak setiap elemen lain dari rentang dalam urutan menurun.

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

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

Ekspresi terdiri dari:

  • Penginisialisasi (i=0 ) menentukan angka di mana loop mulai menghitung.
  • Kondisi berhenti (i<=5 ) menunjukkan kapan loop keluar.
  • Langkah (i++ ) menambah nilai i 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.

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

Untuk menghentikan eksekusi skrip, tekan CTRL +C .

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!"

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.

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

Kode memeriksa angka antara satu dan seratus dan hanya mencetak angka yang habis dibagi sebelas.

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

Output mencetak setiap elemen yang disimpan dalam array dari pertama hingga terakhir.

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

Pengindeksan elemen dimulai dari nol. Oleh karena itu, elemen pertama memiliki indeks nol.

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

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.

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

Loop berulang melalui string, dengan setiap kata menjadi elemen terpisah.

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

Script mencari melalui direktori saat ini dan mencantumkan semua file dengan .sh ekstensi.

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

Komentar Bash menawarkan sintaks alternatif untuk substitusi perintah. Kode membaca konten list.txt file menggunakan cat perintah dan menyimpan informasi ke variabel list .

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

Berikan argumen baris perintah saat Anda menjalankan skrip Bash.

Misalnya:

. <script name> foo bar

[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.


Linux
  1. Panduan Bash For Loop dan Contohnya

  2. Perintah unexpand Linux Dijelaskan untuk Pemula (dengan Contoh)

  3. Contoh Bash untuk loop

  1. Cara Menulis Skrip Bash dengan Contoh

  2. Bash Untuk Loop

  3. Contoh Bash For Loop dan While Loop

  1. Perintah mkdir Linux Dijelaskan untuk Pemula (dengan contoh)

  2. Perintah potong Linux Dijelaskan untuk Pemula (dengan Contoh)

  3. Bash For Loop dengan contoh praktis