GNU/Linux >> Belajar Linux >  >> Linux

Bash Scripting Part2 – Untuk dan Sementara Loop Dengan Contoh

Di bagian pertama tutorial Bash Scripting ini, kita membahas cara menulis skrip Bash. Kami menjelajahi berbagai penggunaan dan skenario unik di mana skrip Bash dapat berguna, membuat contoh yang bagus tentang betapa luar biasanya skrip tersebut.

Di bagian tutorial ini, kita akan melihat for perintah, dan while memerintah. Kami akan menunjukkan bagaimana kami dapat menggunakan perintah ini untuk membuat loop untuk mengulangi serangkaian nilai.

Perulangan Untuk

Di Linux, loop adalah apa yang kita gunakan untuk mengeksekusi perintah pada interval tertentu berulang kali. Loop digunakan dalam berbagai macam bahasa pemrograman untuk tujuan yang sama.

Ada beberapa jenis loop yang berbeda di Linux, tetapi di bagian artikel ini, kita akan fokus pada for lingkaran.

#!/bin/bash

 for y in a b c d w x y z 

> do

> echo $y

done

Seperti yang dapat Anda lihat pada tangkapan layar di atas, kami mengaitkan variabel “y” — yang hanya merupakan pengganti yang tidak berarti yang digunakan untuk kepentingan perintah — ke beberapa huruf alfabet.

Kami kemudian meneruskan variabel itu ke echo perintah, dan itu dapat menampilkan huruf-huruf kami di bawah ini.

Mengulangi Nilai Sederhana

Kita dapat menggunakan for perintah dalam skrip Bash. Untuk melakukan ini, pertama-tama kita perlu membuat file teks di terminal Linux kita. Anda dapat menggunakan touch perintah untuk membuat file teks dengan mudah.

$ touch script

Sintaks di atas akan membuat file teks yang akan kita sebut "script". Pastikan untuk membuat file teks Anda menggunakan .sh ekstensi file. Setelah membuat script , kami ingin mengedit dalam skrip aktual kami yang berisi for perintah.

Kita dapat mencapai ini dengan menjalankan beberapa perintah pengeditan file teks yang berbeda, seperti nano perintah, dan vi perintah, dll.

Tapi kami sarankan hanya menggunakan nano , karena ini adalah salah satu editor teks perintah yang paling sederhana dan mudah digunakan di Linux.

$ nano script

Sintaks di atas akan membuka script our di editor teks nano. Di sini, kami ingin mengetikkan skrip kami.

Perhatikan bahwa file teks ini harus berisi #!/bin/bash , yang menginformasikan skrip Bash tentang shell mana yang akan digunakan, jadi ini adalah komponen penting untuk berhasil membuat skrip Bash.

#!/bin/bash

for var in first second third fourth fifth; do

	echo The $var item

done

Mengulangi Nilai Kompleks

Pada contoh sebelumnya, kami menunjukkan cara menggunakan for perintah untuk mengulangi nilai-nilai sederhana dalam skrip Bash buatan pengguna. Kata sederhana di sini mengacu pada nilai yang hanya berisi satu kata.

Namun terkadang, Anda akan memiliki daftar yang menyertakan — alih-alih apa yang kita lihat di contoh sebelumnya dengan "pertama" — sesuatu di sepanjang baris "yang pertama", yang kebetulan berisi lebih dari satu kata untuk satu nilai. Nilai-nilai ini adalah apa yang kami sebut nilai "kompleks".

Jika daftar Anda memang memiliki nilai kompleks ini, Anda harus merujuknya dengan mengapitnya dalam tanda kutip, sehingga skrip akan memahami bahwa itu hanya satu nilai.

#!/bin/bash

for var in first "the second" "the third" "I’ll do it"; do

	echo "This is: $var"

done

Pergantian Perintah

Kita juga dapat menggunakan substitusi perintah di for perintah dalam skrip Bash kami.

#!/bin/bash

my_file="file01"

for var in $(cat $my_file); do

        echo " $var"

done

Di sini kita menggunakan substitusi perintah dengan subkulit Bash, seperti yang terlihat dengan penggunaan perintah cat di dalam $( ); ini memungkinkan kita untuk menggunakan output dari cat perintah dan dapatkan konten file dengan asumsi bahwa setiap baris memiliki satu kata.

Tetapi jika ada spasi di salah satu baris ini, setiap kata akan dianggap sebagai bidang. Dalam hal ini, Anda perlu memberi tahu shell untuk memperlakukan baris baru sebagai pemisah, bukan spasi.

Pemisah Bidang

Secara default, karakter berikut dianggap sebagai bidang oleh shell Bash.

  • Ruang
  • Tab
  • baris baru

Jika teks Anda menyertakan salah satu karakter ini, shell akan menganggapnya sebagai bidang baru, dan Anda harus mengubah pemisah bidang internal atau variabel lingkungan IFS jika Anda perlu menggunakan karakter ini.

$ IFS=$’n’

Sintaks di atas akan menyebabkan shell Bash mempertimbangkan baris baru sebagai pemisah alih-alih karakter spasi.

#!/bin/bash

file="/etc/passwd"

IFS=$'n'

for var in $(cat $file); do

	echo " $var"

done

Anda juga dapat menetapkan pemisah bidang ke titik dua dengan IFS seperti yang ditunjukkan di bawah ini.

$ IFS=:

Cukup fantastis, ya?

Mengulangi File Direktori

Anda juga dapat menggunakan for loop dalam skrip Bash untuk membuat daftar file di direktori home Anda.

#!/bin/bash

for obj in /home/ubuntu/*; do

	if [ -d "$obj" ]; then

		echo "$obj is a folder"

	elif [ -f "$obj" ]; then

		echo "$obj is a file"

	fi

done

Proses ini mengharuskan Anda menggunakan if pernyataan untuk memeriksa file dan folder. Tapi itu seharusnya tidak menimbulkan banyak masalah bagi Anda jika Anda sudah membaca posting sebelumnya. Tetapi jika kebetulan Anda membutuhkan penyegaran, saya sarankan untuk meninjaunya.

Kami menggunakan wildcard yang disebut tanda bintang (*) dalam skrip Bash kami yang berisi for loop yang memungkinkan kita untuk membuat daftar file dan folder di direktori home kita. Dalam skrip Bash, proses ini disebut “file globbing .” File globbing berarti semua file yang ada dengan nama.

Perhatikan bahwa variabel dalam if pernyataan ditulis dengan tanda kutip karena nama file atau folder mungkin mengandung spasi. Jika kami mengabaikan langkah ini, kami mungkin tidak dapat membuat daftar semua file dan direktori.

Mengulang baris file

Kita dapat menggunakan for loop dalam skrip Bash untuk mengulangi konten file:

#!/bin/bash

IFS=$'n'

for text in $(cat /etc/passwd); do

	echo "This line $text ++ contains"

	IFS=:

	for field in $text; do

		echo " $field"

	done
done

Di sini kita memiliki dua loop, loop pertama mengulangi baris file, dan pemisah adalah baris baru, iterasi kedua melewati kata-kata pada baris itu sendiri, dan pemisah adalah titik dua :

data berkas

Anda dapat menerapkan ide ini saat Anda memiliki CSV atau file nilai yang dipisahkan koma. Idenya sama; Anda hanya perlu mengganti separator agar sesuai dengan kebutuhan Anda.

Untuk Gaya-C loop

Jika Anda terbiasa dengan bahasa C, Anda mungkin memperhatikan bahwa ada sesuatu yang sedikit aneh tentang for loop di Linux terkadang.

Ini karena ada dua cara untuk menulis for loop; cara standar Linux, yang telah kita bahas di awal tutorial ini, dan cara "C-style".

for (var= 0; var < 5; var++)

{

printf(“number is %dn”, var);

}

Sintaks di atas adalah untuk for loop ditulis dalam C. Gaya-C for loop di Linux ditulis sangat mirip dengan ini dengan beberapa perubahan kecil, yang dapat diamati di bawah.

untuk (( variabel =mulai; kondisi; langkah iterasi))

for (( var = 1; var < 5; var++ ))

Untuk membantu melukis gambar dengan lebih baik, kami akan menyertakan contoh skrip Bash menggunakan for gaya-C loop di terminal Linux kami.

#!/bin/bash

for ((var = 1; var <= 10; var++)); do

	echo "number is $var"

done

Letakkan ini di file teks kami dan jalankan.

Perintah Lanjutkan

Bash continue perintah mengabaikan perintah di dalam loop luar untuk iterasi saat ini dan memberikan kontrol ke yang berikutnya. Anda dapat menggunakan perintah ini untuk berhenti mengeksekusi perintah yang tersisa di dalam loop tanpa keluar dari loop.

Dalam beberapa contoh berikutnya, kita akan membahas bagaimana perintah ini dapat digunakan dalam loop skrip Bash di Linux.

Perintah Istirahat

Anda dapat menggunakan perintah break untuk keluar dari loop mana pun, seperti loop while dan hingga.

#!/bin/bash

for number in 10 11 12 13 14 15; do

	if [ $number -eq 14 ]; then

		break

	fi

	echo "Number: $number"

done

Loop berjalan hingga mencapai 14 kemudian perintah keluar dari loop.
Kita akan membahas beberapa contoh lagi dari perintah ini nanti.

Perulangan Sementara

Perulangan for bukan satu-satunya cara untuk perulangan dalam skrip Bash. while loop melakukan pekerjaan yang sama, tetapi memeriksa kondisi sebelum setiap iterasi. Struktur while loop dapat dilihat di bawah ini.

while [ condition ]

do

    commands

done

Kami akan memberikan contoh dengan skrip Bash.

#!/bin/bash

number=10

while [ $number -gt 4 ]; do

	echo $number

	number=$(($number - 1))

done

Cara kerja skrip Bash ini sederhana; dimulai dengan while perintah untuk memeriksa apakah angkanya lebih besar dari nol, maka itu akan menjalankan loop, dan nilai angka akan berkurang setiap kali 1. Pada setiap iterasi loop, skrip akan mencetak nilai angka. Perulangan akan berjalan sampai angka tersebut mencapai 0.

Loop Bersarang

Anda dapat membuat loop di dalam loop lain, seperti while lingkaran misalnya. Loop ini dalam satu loop disebut loop bersarang. Kami akan mempelajarinya dengan terlebih dahulu memeriksa cara membuat for . bersarang loop dalam contoh berikut.

Beberapa for loop (bersarang untuk)

Dalam contoh sebelumnya sejauh ini dalam tutorial ini, kami telah menunjukkan cara membuat for loop dalam skrip Bash di Linux. Tetapi ada juga sesuatu yang kami sebut for bersarang loop. Ini adalah loop dalam loop lain, atau hanya beberapa loop, secara sederhana.

Kami akan menunjukkan kepada Anda contoh mudah tentang tampilannya, bersama dengan pemeriksaan dan deskripsi singkatnya di bawah.

for y in a b c d e f

do

    for u in a b c d e f

    do

        echo "$y$u"

    done

done

Seperti yang Anda lihat pada tangkapan layar di atas, output yang kami terima saat menjalankan skrip kami di terminal baris perintah Linux berbunyi sebagai berikut:teks contoh kami di setiap for loop adalah “a b c d e f”.

Apa yang dilakukan skrip kami, adalah menggemakan teks di loop luar di samping teks dari loop dalam.

Script terus menampilkan bidang pertama (dalam hal ini spasi, kami akan menjelaskannya nanti) dari teks di loop luar sampai setiap bidang yang terkandung dalam loop dalam telah dikeluarkan.

Setelah menyelesaikan output loop dalam, skrip Bash kita kemudian akan mulai menampilkan bidang teks berikut di loop luar.

Seluruh proses ini akan diulang sampai setiap bidang dari setiap loop telah sepenuhnya dicetak pada output di terminal Linux Anda.

Beberapa while loop (bersarang sementara)

Seperti for yang disarangkan loop perintah, ada juga while bersarang loop perintah. Ini bekerja persis sama dengan loop bersarang untuk for memerintah; sebuah loop di dalam loop lain.

Sintaks di bawah ini akan memiliki kemiripan yang mencolok dengan while biasa loop, sebagai struktur while . bersarang loop hanyalah bentuk yang diperluas dari basis while loop, yang dapat diamati pada sintaks di bawah ini.

while [condition]

do 

  statements1 

  statements2

  while [condition]

do

  continue

done

  statements3

done

Sintaks di atas akan melakukan tugas tertentu hingga kondisi yang Anda pilih terpenuhi. Inilah yang disebut lingkaran. Namun karena loop pada contoh di atas bersarang, ini berarti bahwa salah satu tugas yang kami sebutkan di atas adalah loop lain itu sendiri.

Sementara Berikutnya

Kami telah menunjukkan bagaimana while loop dan for loop bisa sangat berguna untuk menjalankan proses kompleks menggunakan skrip Bash di Linux.

Namun terkadang, karena berbagai alasan, Anda harus mematikan salah satu loop di skrip Bash Anda. Skenario ini, kedengarannya brutal, sering terjadi dalam pekerjaan administrasi sistem. Jadi, Anda mungkin ingin membiasakan diri dengan konsep ini.

Di shell Bash, break perintah dan continue command dapat menyediakan alat yang diperlukan untuk mengontrol aliran loop skrip Bash Anda.

Kami akan menunjukkan bagaimana perintah ini bekerja secara individual dengan beberapa contoh di bawah ini.

Sintaks untuk menggunakan brea perintah untuk keluar dari while loop adalah sebagai berikut:

$  while [ condition ]
do
    commands
continue
done

continue perintah break perintah bekerja sangat mirip dan dapat dianggap berlawanan satu sama lain; continue perintah bekerja persis seperti break perintah, hanya itu yang melanjutkan loop alih-alih mematikannya.

Keluar Saat Perulangan

break perintah membunuh loop saat ini dan memberikan kontrol ke perintah berikutnya setelah loop itu. Anda dapat menggunakan proses ini untuk keluar dari loop seperti for ,while , dll. Sintaks break perintahnya adalah sebagai berikut:

$ while [ condition ]
do
    commands
break
done

Tapi seperti yang kami sebutkan di atas, keduanya continue perintah dan break perintah dapat digunakan untuk loop skrip Bash lainnya selain while lingkaran. Kami akan menunjukkan cara menggunakannya di for lingkaran.

Keluar Untuk Loop

Anda dapat menggunakan perintah kontrol loop ini dalam for lingkaran. Kami akan menggunakan break perintah untuk keluar dari for loop dalam skrip Bash kami.

#!/bin/bash

for number in 10 11 12 13 14 15; do

	if [ $number -eq 14 ]; then

		break

	fi

	echo "Number: $number"

done

for loop berjalan hingga mencapai angka yang kita tentukan dalam skrip bash, yaitu 14. Setelah mencapai angka yang kita tentukan, break perintah akan keluar dari for lingkaran.

Break If Statement

Kami baru saja menunjukkan bagaimana kami dapat menggunakan break perintah untuk keluar dari for loop, tetapi kita juga dapat menggunakan perintah ini untuk keluar dari if pernyataan di dalam loop skrip Bash ini.

i=0

while [[ $i -lt 10 ]]

do

  echo "Number: $i"

  ((i++))

  if [[ $i -eq 5 ]]; then

    break

  fi

done

Lanjutkan Pernyataan

Kami melakukan hal yang sama seperti yang kami lakukan pada contoh sebelumnya dengan continue perintah seperti yang kita lakukan dengan break perintah dalam while loop dalam skrip Bash.

i=0

while [[ $i -lt 10 ]]; do

  ((i++))

  if [[ "$i" == '5' ]]; then

    continue

  fi

  echo "Number: $i"

done

Pemikiran Penutup

Saya harap Anda telah mempelajari satu atau dua hal baru. Atau, paling tidak, saya harap Anda dapat meninjau kembali apa yang sudah Anda ketahui. Kata-kata terakhir saya hari ini untuk Anda adalah terus membaca dan berlatih.

Terima kasih.


Linux
  1. Panduan Bash For Loop dan Contohnya

  2. Contoh Bash For Loop dan While Loop

  3. '&&' vs. '&' dengan perintah 'test' di Bash

  1. Tutorial Bash HereDoc Dengan Contoh

  2. Tutorial Perintah Linux which dan whoami untuk Pemula (dengan Contoh)

  3. Skrip Linux:3 cara untuk while loop di Bash

  1. Perintah Grup Linux untuk Pemula (dengan Contoh)

  2. Tutorial Perintah Linux tr untuk Pemula (dengan Contoh)

  3. Tutorial Perintah readlink dan realpath Linux untuk Pemula (dengan Contoh)