GNU/Linux >> Belajar Linux >  >> Linux

Bash For Loop – Panduan Paling Praktis

Artikel ini melanjutkan seri artikel Bash dan berfokus pada iterasi. Loop di Bash berguna untuk administrator dan pemrogram sistem apa pun. Konstruksi perulangan dalam bahasa skrip apa pun memungkinkan Anda menjalankan banyak perintah dan terus menjalankannya kembali hingga situasi tertentu tercapai. Dalam istilah sederhana, loop berguna untuk mengotomatisasi tugas yang berulang. Ada tiga konstruksi loop dalam bahasa skrip shell:

  • Sementara -loop.
  • Untuk -loop.
  • Sampai -loop.

untuk -loop adalah pernyataan iterasi dalam bahasa Bash yang digunakan untuk melakukan serangkaian tindakan. Anda dapat menggunakannya pada prompt shell atau di dalam skrip shell itu sendiri. Ini beroperasi pada daftar item dan mengulangi serangkaian perintah untuk setiap item dalam daftar.

Sintaks Dasar

Sintaks dasar ditunjukkan di bawah ini:

for item in [LIST]
do
  COMMANDS
done

Dimana:

  • DAFTAR adalah rangkaian string atau angka yang dipisahkan oleh spasi.
  • PERINTAH adalah sekumpulan perintah yang dijalankan pada daftar item.
  • untukdilakukan, dan selesai adalah kata kunci sintaks loop.
  • barang adalah nama variabel Bash yang digunakan untuk mendapatkan akses ke item dari daftar.

Mengulangi angka

Anda dapat menggunakan jenis perulangan ini untuk mengulangi serangkaian angka atau daftar numerik hingga daftar tersebut habis.

Dalam contoh berikut, kami mengulangi angka 1 2 3 4 5 .

#!/bin/bash
for var in 1 2 3 4 5
do
 echo "Number is $var"
done

Anda akan mendapatkan output berikut:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 5

Dalam contoh di atas, untuk -loop mengambil setiap item dari daftar, menyimpannya dalam variabel var , dan menjalankan perintah antara do dan selesai .

Anda juga dapat menentukan rentang angka dengan menentukan rentang nilai.

Dalam contoh berikut, kami mengulangi semua angka antara 10 dan 15 .

#!/bin/bash
for var in {10..15}
do
 echo "Number is $var"
done

Anda akan mendapatkan output berikut:

Number is 10
Number is 11
Number is 12
Number is 13
Number is 14
Number is 15

Saat Anda menggunakan rentang tertentu dalam loop, Anda juga dapat menentukan kenaikan untuk menambah setiap angka.

Dalam contoh berikut, kami mengulangi rentang angka dari 0 ke 10 dan tambah setiap angka dengan 2 :

#!/bin/bash
for var in {0..10..2}
do
 echo "Number is $var"
done

Anda akan mendapatkan output berikut:

Number is 0
Number is 2
Number is 4
Number is 6
Number is 8
Number is 10

Mengulangi string

Anda juga dapat menggunakan loop untuk mengulangi daftar string.

Dalam contoh berikut, kami mengulangi daftar string satu per satu:

#!/bin/bash
for month in Jan Feb Mar Apr May Jun
do
 echo "Month is $month"
done

Anda akan mendapatkan output berikut:

Month is Jan
Month is Feb
Month is Mar
Month is Apr
Month is May
Month is Jun

Mengulangi array

Dalam contoh berikut, kami mengulangi semua elemen di CARS susunan:

#!/bin/bash
CARS=('Maruti' 'Toyota' 'BMW' 'Tata' 'Datsun')
for car in "${CARS[@]}"; do
  echo "Car: $car"
done

Anda akan mendapatkan output berikut:

Car: Maruti
Car: Toyota
Car: BMW
Car: Tata
Car: Datsun

Pada contoh berikut, untuk -loop mengulangi semua elemen dalam larik hari kerja.

#!/bin/bash
i=1
weekdays="Mon Tue Wed Thu Fri"
for day in $weekdays
do
 echo "Weekday $((i++)): $day"
done

Anda akan mendapatkan output berikut:

Weekday 1: Mon
Weekday 2: Tue
Weekday 3: Wed
Weekday 4: Thu
Weekday 5: Fri

Loop tak terbatas

Anda dapat membuat infinite loop menggunakan ekspresi kosong.

#!/bin/bash
for (( ; ; ))
do
   echo "Infinite Loops [ press CTRL+C to stop]"
done

Anda akan mendapatkan output berikut:

Infinite Loops [ press CTRL+C to stop]
Infinite Loops [ press CTRL+C to stop]
Infinite Loops [ press CTRL+C to stop]
Infinite Loops [ press CTRL+C to stop]
Infinite Loops [ press CTRL+C to stop]
Infinite Loops [ press CTRL+C to stop]
Infinite Loops [ press CTRL+C to stop]

Anda dapat menekan CRTL+C untuk menghentikan infinite loop.

Pernyataan putus

Anda dapat menggunakan jeda pernyataan untuk keluar dari loop sebelumnya.

Dalam contoh berikut, kami mengulangi angka antara 20 ke 30 . Kami akan menggunakan jika -pernyataan untuk keluar dari loop setelah item yang diulang saat ini sama dengan 27 .

#!/bin/bash
for var in {20..30}
do
  if [[ "$var" == '27' ]]; then
    break
  fi
  echo "Number is: $var"
done

Anda akan mendapatkan output berikut:

Number is: 20
Number is: 21
Number is: 22
Number is: 23
Number is: 24
Number is: 25
Number is: 26

Lanjutkan pernyataan

Pernyataan continue digunakan di dalam loop. Ketika pernyataan continue ditemukan di dalam sebuah loop, aliran kontrol melompat ke awal loop untuk iterasi berikutnya, melewatkan eksekusi pernyataan di dalam body loop untuk iterasi saat ini.

Dalam contoh berikut, kami mengulangi angka antara 10 ke 15 . Saat item yang diulang saat ini sama dengan 13 , pernyataan continue akan menghentikan eksekusi, kembali ke awal loop dan melanjutkan dengan iterasi berikutnya:

#!/bin/bash
for var in {10..15}
do
  if [[ "$var" == '13' ]]; then
    continue
  fi
  echo "Number is: $var"
done

Anda akan mendapatkan output berikut:

Number is: 10
Number is: 11
Number is: 12
Number is: 14
Number is: 15

Contoh lanjutan

Ganti Nama Ekstensi File

Bagian ini akan menunjukkan cara mengubah ekstensi semua file dalam direktori.

Contoh berikut akan mengubah ekstensi semua file di direktori saat ini dari .php ke .html .

#!/bin/bash
for file in *.php; do
  mv "$file" "${file%.php}.html"
  echo $file is renamed to "${file%.php}.html"
done

Anda akan mendapatkan output berikut:

admin.php is converted to admin.html
ajax.php is converted to ajax.html
composer.php is converted to composer.html
index.php is converted to index.html
login.php is converted to login.html

Menampilkan Jumlah Kali dalam Satu Baris

Dalam contoh ini, kami akan menampilkan waktu sistem saat ini setiap 2 detik.

#!/bin/bash
for now in {1..5}
do
  date
  sleep 2
done

Anda akan mendapatkan output berikut:

Fri Dec  4 12:19:10 IST 2020
Fri Dec  4 12:19:12 IST 2020
Fri Dec  4 12:19:14 IST 2020
Fri Dec  4 12:19:16 IST 2020
Fri Dec  4 12:19:18 IST 2020

Membuka Beberapa File Tar

Anda dapat melakukan tindakan yang sama di semua file dengan ekstensi yang sama. Misalnya, mari kita untar beberapa file dalam direktori.

Contoh berikut akan mengekstrak semua file tar yang terletak di dalam direktori saat ini:

#!/bin/bash
for var in *.tar
do
  echo "Processing $var..."
  tar -xf "$var"
done

Ping Beberapa Server

Anda dapat menggunakan ekspresi loop untuk melakukan ping ke beberapa server dari daftar.

Pertama, buat file bernama domain.txt dan tambahkan semua server ke file ini, seperti yang ditunjukkan di bawah ini:

cat domain.txt

Tambahkan baris berikut:

google.com
facebook.com
yahoo.com
wordpress.com

Sekarang, mari kita ping semua server yang terdaftar di file domain.txt seperti gambar di bawah ini:

#!/bin/bash
for var in $(cat domain.txt)
do
  ping -c 1 "$var"
done

Anda akan mendapatkan output berikut:

PING google.com (216.58.203.14) 56(84) bytes of data.
64 bytes from hkg12s09-in-f14.1e100.net (216.58.203.14): icmp_seq=1 ttl=117 time=119 ms
 
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 119.469/119.469/119.469/0.000 ms
PING facebook.com (69.171.250.35) 56(84) bytes of data.
64 bytes from edge-star-mini-shv-01-any2.facebook.com (69.171.250.35): icmp_seq=1 ttl=56 time=43.9 ms
 
--- facebook.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 43.994/43.994/43.994/0.000 ms
PING yahoo.com (74.6.231.21) 56(84) bytes of data.
64 bytes from media-router-fp74.prod.media.vip.ne1.yahoo.com (74.6.231.21): icmp_seq=1 ttl=51 time=371 ms
 
--- yahoo.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 371.135/371.135/371.135/0.000 ms
PING wordpress.com (192.0.78.9) 56(84) bytes of data.
64 bytes from 192.0.78.9: icmp_seq=1 ttl=56 time=40.1 ms
 
--- wordpress.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 40.162/40.162/40.162/0.000 ms

Daftar File dengan Ketentuan

Berikut adalah contoh yang menunjukkan cara membuat daftar semua file di dalam direktori tertentu yang cocok dengan kondisi tertentu.

Misalnya, daftar semua .conf file di dalam /etc direktori yang dimulai dengan abc atau d huruf:

#!/bin/bash
i=1
for file in /etc/[abcd]*.conf
do
  echo "File $((i++)) : $file"
done

Anda harus mendapatkan daftar semua file dalam output berikut:

File 1 : /etc/adduser.conf
File 2 : /etc/apg.conf
File 3 : /etc/blkid.conf
File 4 : /etc/brltty.conf
File 5 : /etc/ca-certificates.conf
File 6 : /etc/colord.conf
File 7 : /etc/debconf.conf
File 8 : /etc/deluser.conf

Ringkasan

Dalam artikel ini, kami telah membahas berbagai contoh penggunaan Bash untuk -loop. Kami berharap, sekarang Anda memiliki gagasan tentang bagaimana Anda dapat mengotomatiskan tugas sehari-hari Anda sendiri. Jika artikel ini bermanfaat, tolong bantu kami untuk menyebarkannya ke seluruh dunia.


Linux
  1. Panduan Bash For Loop dan Contohnya

  2. Sejajarkan Bash Untuk Loop?

  3. 12 Contoh Bash For Loop untuk Scripting Shell Linux Anda

  1. Panduan terminal Linux untuk pemula

  2. Batas Praktis Jumlah Snapshot Btrfs?

  3. Cara mendapatkan status keluar satu lingkaran di bash

  1. Basa'?

  2. Contoh Bash For Loop dan While Loop

  3. Menjaga Anda di Loop – Contoh Bash Untuk, Sementara, Sampai Loop