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.