Skrip shell, khususnya skrip Bash, adalah cara yang bagus untuk mengotomatiskan tugas yang berulang atau membosankan di sistem Anda. Mengapa mengetik ketika Anda dapat menjadwalkan dan menjalankan skrip secara handsfree? Salah satu dari banyak konstruksi skrip adalah loop. Loop adalah bagian kode yang mengambil data atau menghasilkan data dan kemudian melakukan beberapa operasi pada data dan kemudian memulai proses lagi hingga beberapa kondisi terpenuhi, skrip terganggu, atau saat data input habis. Saat Anda menggunakan skrip Bash, terkadang berguna untuk melakukan tindakan menggunakan beberapa bentuk perulangan.
[ Pembaca juga menyukai: Lima cara menggunakan operator pengalihan di bash ]
Perintah loop dasar dalam skrip Bash adalah for
dan while
.
for
loop biasanya digunakan saat Anda memiliki daftar terbatas yang diketahui, seperti rangkaian angka, daftar item, atau penghitung.while
loop dapat digunakan dengan daftar tetapi juga berguna untuk kondisi yang tidak memiliki batas yang diketahui. Anda dapat menggunakannya untuk menjalankan perintah sementara suatu kondisi benar (atau membalikkan logika dan menjalankannya saat kondisi salah).
Jadi, sementara (pun intended) ada berbagai cara untuk melakukan loop, dalam artikel ini, saya fokus pada contoh menggunakan while
loop.
1. Perulangan while sederhana
Bayangkan Anda sedang menginstal aplikasi besar, dan Anda khawatir aplikasi tersebut pada akhirnya akan menggunakan terlalu banyak ruang pada sistem file.
Alih-alih menjalankan df
di terminal terpisah, Anda dapat menjalankan perintah sederhana untuk memantau penggunaan disk setiap detik. Ini memungkinkan Anda untuk menghentikan proses penginstalan jika Anda melihat bahwa itu akan mencapai batas itu.
while true
do
df -k | grep home
sleep 1
done
Dalam hal ini, Anda menjalankan loop dengan true kondisi, yang berarti akan berjalan selamanya atau sampai Anda menekan CTRL-C. Oleh karena itu, Anda perlu mengawasinya (jika tidak, sumber daya sistem akan tetap digunakan).
Catatan :Jika Anda menggunakan loop seperti ini, Anda harus menyertakan perintah seperti sleep
untuk memberi sistem waktu untuk bernafas di antara eksekusi. Menjalankan apa pun tanpa henti dapat menjadi masalah kinerja, terutama jika perintah di dalam loop melibatkan operasi I/O.
2. Menunggu suatu kondisi menjadi kenyataan
Ada variasi skenario ini. Misalnya, Anda tahu bahwa pada suatu saat, proses akan membuat direktori, dan Anda hanya menunggu saat itu untuk melakukan validasi lainnya.
Anda dapat memiliki while
loop untuk terus memeriksa keberadaan direktori itu dan hanya menulis pesan saat direktori tidak ada.
Jika Anda ingin melakukan sesuatu yang lebih rumit, Anda dapat membuat skrip dan menunjukkan indikasi yang lebih jelas bahwa kondisi loop menjadi benar:
#!/bin/bash
while [ ! -d directory_expected ]
do
echo "`date` - Still waiting"
sleep 1
done
echo "DIRECTORY IS THERE!!!"
3. Menggunakan loop while untuk memanipulasi file
Aplikasi lain yang berguna dari while
loop adalah untuk menggabungkannya dengan read
perintah untuk memiliki akses ke kolom (atau bidang) dengan cepat dari file teks dan melakukan beberapa tindakan pada kolom tersebut.
Dalam contoh berikut, Anda cukup memilih kolom dari file teks dengan format yang dapat diprediksi dan mencetak nilai yang ingin Anda gunakan untuk mengisi /etc/hosts
berkas.
Di sini asumsinya adalah bahwa file memiliki kolom yang dibatasi oleh spasi atau tab dan tidak ada tidak spasi dalam isi kolom. Itu bisa mengubah isi kolom dan tidak memberikan apa yang Anda butuhkan.
Perhatikan bahwa Anda hanya melakukan operasi sederhana untuk mengekstrak dan memanipulasi informasi dan tidak peduli tentang kegunaan kembali perintah. Saya akan mengklasifikasikan ini sebagai salah satu dari "trik cepat dan kotor".
Tentu saja, jika ini adalah sesuatu yang akan Anda lakukan berulang kali, Anda harus menjalankannya dari skrip, menggunakan nama yang tepat untuk variabel, dan semua praktik yang baik (termasuk mengubah nama file dalam argumen dan menentukan ke mana harus mengirim output, tetapi hari ini, topiknya adalah while
loop).
#!/bin/bash
cat servers.txt | grep -v CPU | while read servername cpu ram ip
do
echo $ip $servername
done
[ Pelajari dasar-dasar penggunaan Kubernetes di lembar contekan gratis ini. ]
Menutup
while
loop berguna dalam skrip yang bergantung pada kondisi tertentu untuk benar atau salah, tetapi Anda juga dapat menggunakannya secara interaktif untuk memantau beberapa kondisi.
Hal-hal penting untuk diingat adalah:
Selalu jelas tentang apa syarat untuk mengakhiri putaran. Jika itu adalah sesuatu yang Anda harapkan untuk dilakukan sendiri dengan CTRL-C , lalu awasi perintah Anda. Pikirkan tentang seberapa cepat Anda ingin setiap siklus loop diulang. Jika Anda melakukan operasi apa pun yang melibatkan I/O di dalam loop, itu menjadi aspek penting dari perencanaan.
Dengan mengingat hal itu, bersenang-senanglah while
Anda bisa.