GNU/Linux >> Belajar Linux >  >> Linux

Skrip Linux:3 cara untuk while loop di Bash

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.


Linux
  1. Bash Seri Pemula #8:Loop di Bash

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

  3. Pesta Linux. untuk loop dan fungsi, untuk menambahkan angka

  1. Panduan Bash For Loop dan Contohnya

  2. Sejajarkan Bash Untuk Loop?

  3. Contoh Bash For Loop dan While Loop

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

  2. Contoh Bash untuk loop

  3. Menggunakan dan di Bash while loop