GNU/Linux >> Belajar Linux >  >> Linux

Shell Scripting Bagian 4:Struktur Kontrol Pengulangan

Selamat datang di bagian empat dari seri tutorial skrip shell HowtoForge (Klik di sini untuk membaca bagian 1, bagian 2 dan bagian 3 dari tutorial). Pada bagian ini, kita akan membahas struktur kontrol pengulangan yang berbeda dari bash shell dan bagaimana menggunakan setiap struktur dengan memberikan beberapa contoh. Mari kita mulai.

Pengantar

Struktur kontrol pengulangan, juga dikenal sebagai struktur kontrol perulangan, adalah jenis struktur kontrol dalam bahasa pemrograman yang digunakan untuk menyederhanakan tugas berulang atau rekursif. Pernyataan perulangan mengoptimalkan kode apa pun dengan menyediakan cara untuk meminimalkan kode, membuatnya lebih mudah untuk memecahkan masalah daripada kode tidak terstruktur yang memberikan output yang sama. Ada tiga jenis pernyataan perulangan yang didukung oleh shell bash - perulangan for, while dan hingga.

Untuk Loop

Perulangan for adalah pernyataan perulangan yang menggunakan kata kunci for untuk mendeklarasikan pernyataan berulang. Bash mendukung sintaks yang berbeda untuk pernyataan for loop:

Sintaks 1:Struktur For-in

for <varName> in <list>
do
    #### your statement here
done

Sintaks ini dimulai dengan kata kunci untuk, kemudian diikuti dengan nama variabel, kata kunci di dan daftar kemungkinan nilai untuk variabel. Setiap nilai dalam daftar akan dipisahkan dengan spasi dan awal baris kode yang akan diulang didefinisikan dalam do dan diakhiri dengan kata kunci done.

Mari kita buat pernyataan perulangan sederhana yang memungkinkan pengguna memasukkan 5 nilai dan mendapatkan jumlah angka:

#!/bin/bash 
result=0;
input=0;
for var in 1 2 3 4 5
do
     printf "Input integer %d : " $var
     read input
     result=$((result+input))
done
echo "the result is " $result

Dalam contoh ini, variabel var berfungsi sebagai penghitung loop kita. Nilainya didefinisikan dalam daftar angka setelah kata kunci masuk dan shell mengubah nilai variabel var setelah setiap eksekusi siklus dalam pernyataan perulangan. Karena hanya ada lima nilai integer dalam daftar kami, shell akan mengeksekusi kode di dalam pernyataan perulangan kami hanya lima kali.

Sintaks 2:Untuk mengulang Pernyataan dengan nilai daftar String

Anda juga dapat mendeklarasikan variabel yang akan menampung daftar item untuk penghitung Anda. Misalnya, perhatikan kode berikut:

#!/bin/bash
list="var1 var2 var3 var4"
var=""
mkdir sample
cd sample
echo creating the "directories...."
for var in $list
do
     mkdir $var
done

Baris list="var1 var2 var3 var4" mendefinisikan nilai dari variabel daftar. Itu kemudian ditugaskan ke var di baris untuk var di $list dan akhirnya, direktori kemudian dibuat di baris mkdir $var.

Sintaks 3:Untuk pernyataan loop dengan daftar sebagai file

Anda juga dapat mengambil daftar dari file yang ada untuk digunakan dalam pernyataan perulangan alih-alih mendeklarasikannya di dalam kode Anda dengan menggunakan perintah cat. Misalnya, buka editor teks favorit Anda, lalu daftarkan setidaknya lima nama direktori.

Selanjutnya buka tab baru di editor teks yang sama dan buat skrip baru. Script ini harus disimpan di direktori yang sama dengan daftar direktori yang Anda buat sebelumnya.

#!/bin/bash 
dirList=$(cat list)
echo "creating directories...."
for var in $dirList
do
mkdir $var
done

Contoh ini berguna ketika Anda harus membuat ratusan direktori di komputer Linux Anda, bukan?

Sintaks 4:Sintaks seperti C

for((initialization; boolean_test; increment/decrement))
do
#### your code goes here
done

Mungkin, struktur for loop yang paling dikenal yang didukung shell adalah struktur mirip-C. Loop dimulai dengan inisialisasi variabel counter dan kemudian shell mengevaluasi ekspresi Boolean yang dideklarasikan setelah inisialisasi. Jika hasil ekspresi Boolean benar, maka shell akan mengeksekusi set pernyataan di dalam klausa do, sebaliknya shell akan menghentikan pernyataan perulangan dan melanjutkan ke baris setelah kata kunci done. Shell akan melanjutkan ke iterasi berikutnya melalui pernyataan kenaikan atau penurunan yang dideklarasikan setelah pengujian Boolean. Sebagai contoh, mari kita merekonstruksi contoh pertama kita menggunakan struktur ini.

#!/bin/bash 
result=0
input=0
for((var=1;var<=5;var++))
do
printf "Input integer %d : " $var
read input
result=$((result+input))
done
echo $result

Pernyataan While Looping

Pernyataan while adalah jenis struktur berulang dalam bash yang menggunakan kata kunci while. Tidak seperti sintaks tipe-C untuk struktur perulangan, struktur kontrol while yang berulang memisahkan inisialisasi, pengujian Boolean, dan pernyataan kenaikan/penurunan.

Sintaks 1:Sementara Struktur dengan Simbol Aritmatika berdasarkan pernyataan kondisional

<initialization>
while(condition)
do
    ###your code goes here
<increment/decrement>
done

Untuk dapat membedakan while dari pernyataan perulangan lainnya, mari buat contoh pertama untuk pernyataan while.

#!/bin/bash
result=0
input=0
var=1
while((var <= 5))
do
printf "Input integer %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "the result is " $result

Melihat contoh kita, pernyataan while dimulai dengan inisialisasi variabel penghitung kita var. Selanjutnya, uji Boolean dideklarasikan setelah kata kunci while dan kumpulan pernyataan yang akan diulang akan dideklarasikan di dalam pernyataan do dan done. Dalam pernyataan while, interpreter hanya akan memulai dan mengeksekusi pengulangan kode jika hasil pengujian Boolean benar. Di sisi lain, pernyataan perulangan akan pernyataan hanya akan menghentikan iterasi kode ketika ekspresi Boolean menghasilkan false.

Sintaks 2:Pernyataan While Looping dengan pernyataan kondisional berbasis mnemonic

<initialization>
while [ <condition> ]
do
####your code goes here
<increment/decrement>
done

Anda juga dapat mendeklarasikan pernyataan kondisional berbasis mnemonic di dalam pernyataan while loop. Untuk deklarasi, tanda kurung siku akan digunakan sebagai pengganti tanda kurung. (Tinjau pernyataan kondisional berbasis mnemonic di sini ) Misalnya:

#!/bin/bash 
var=1;
while [ $var -le 5 ]
do
printf "Input integer %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "the result is " $result

Sintaks 3:Pernyataan While Looping dengan Pernyataan Bersyarat Berbasis File

while read <variable_name>
do
####your code goes here
done <<path to the text file>

Sama seperti yang kita lakukan dalam pernyataan for looping, Anda juga dapat membuka file teks dan mengaitkannya dalam pernyataan while looping. Misalnya:

#!/bin/bash 
mkdir sample2
cd sample2
echo "creating directories..."
while read var
do
    mkdir $var
done<list

Dalam contoh ini, saya telah mendaur ulang daftar yang kami buat beberapa waktu lalu dan membuat skrip baru di direktori yang sama. Perhatikan bahwa jika file teks Anda terletak di direktori yang berbeda, Anda harus memberikan jalur file yang tepat setelah

Sampai Pernyataan Perulangan

Jenis pernyataan perulangan lain yang didukung bash adalah struktur hingga. Pernyataan hingga mengeksekusi setiap perintah di dalam loop sampai ekspresi boolean menyatakan hasil menjadi salah. Ini adalah kebalikan dari pernyataan while.

Sintaks 1:Sampai Loop dengan Pernyataan Bersyarat Berbasis Simbol Aritmatika

until ((<conditional_statement>))
do
####set of commands
done

Mari kita ambil contoh:

result=0 
input=0
var=1
until((var > 5))
do
printf "Input integer %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "the result is " $result

Sintaks 2:Hingga Pernyataan Perulangan dengan pernyataan kondisional berbasis mnemonic

<initialization>
until [ <condition> ]
do
     ####your code goes here
<increment/decrement>
done

Karena pernyataan while merupakan kebalikan dari pernyataan while looping, Anda juga dapat mendeklarasikan pernyataan kondisional berbasis mnemonic dalam struktur hingga. Namun, untuk menghentikannya, Anda harus mendeklarasikan pernyataan bersyarat yang berlawanan - yaitu, membuat pernyataan bersyarat bernilai salah.

!/bin/bash 
result=0
input=0
var=1
until [ $var -gt 5 ]
do
printf "Input integer %d : " $var
read input
result=$((result+input))
var=$((var+1))
done
echo "the result is " $result

Kesimpulan

Bagian tutorial ini mencakup tiga struktur perulangan yang didukung bash - pernyataan perulangan for, while dan hingga. Masing-masing pernyataan ini memiliki struktur, penggunaan, dan keunggulan yang berbeda. Bash mendukung struktur yang berbeda, memberikan lebih banyak pilihan kepada pemrogram dan dengan demikian, membuat skrip shell mudah dikodekan.


Linux
  1. Deskriptor File &Skrip Shell?

  2. Bagaimana Membandingkan String di Bash Shell Scripting

  3. Dapatkan daftar nama fungsi dalam skrip shell

  1. Sebutkan Semua Perintah yang Diketahui Shell?

  2. Temukan dan ganti dalam skrip shell

  3. Apa itu penggunaan () dalam skrip shell?

  1. Bagaimana Mengurai Json Dengan Shell Scripting Di Linux?

  2. Mekanisme Blok Pernyataan Dalam Scripting Shell?

  3. Haruskah Saya Menggunakan Apt Atau Apt-get Di Shell Scripting?