Menulis efisien untuk loop dalam tip dan trik bash
- 3380
- 358
- Hector Kuhic
Bash adalah bahasa skrip shell populer yang biasa digunakan dalam sistem operasi berbasis Linux dan Unix. Salah satu konstruksi yang paling umum digunakan dalam bash adalah loop untuk, yang digunakan untuk mengulangi satu set item dan melakukan tindakan tertentu pada setiap item. Namun, penting untuk menulis secara efisien untuk loop untuk mengoptimalkan kinerja skrip.
Penting juga untuk dicatat bahwa Bash hanyalah salah satu dari banyak bahasa skrip yang tersedia, dan kemampuannya mungkin terbatas dalam skenario tertentu. Jika Anda menemukan bahwa skrip bash Anda menjadi terlalu kompleks atau sulit dioptimalkan, Anda mungkin ingin mempertimbangkan untuk menggunakan bahasa skrip yang lebih kuat, seperti Python atau Perl.
Dalam tutorial ini, kami akan mengeksplorasi beberapa tips dan trik untuk menulis secara efisien untuk loop di bash.
Kiat #1: Gunakan sintaksis yang tepat
Sintaks untuk dasar untuk loop dalam bash adalah sebagai berikut:
Untuk variabel di [daftar] do [command (s)] selesai1234 | Untuk variabel di [daftar] do [command (s)] selesai |
[Daftar] dapat berupa satu set item yang dipisahkan oleh spasi, atau dapat berupa kisaran angka yang ditentukan menggunakan sintaks start… end. Penting untuk menggunakan sintaks yang benar untuk kasus penggunaan spesifik Anda.
Misalnya, jika Anda mengulangi satu set item yang besar, lebih baik menggunakan rentang sintaks daripada mendaftarkan setiap item secara individual. Ini dapat membantu meningkatkan kinerja dengan mengurangi jumlah iterasi yang diperlukan untuk menyelesaikan loop.
Kiat #2: Minimalkan perintah eksternal
Setiap kali Anda menjalankan perintah dalam loop For, itu menimbulkan penalti kinerja karena overhead meluncurkan proses baru. Oleh karena itu, penting untuk meminimalkan jumlah perintah eksternal yang Anda gunakan dalam lingkaran untuk Anda.
Misalnya, alih-alih menggunakan perintah eksternal untuk menghitung jumlah file dalam direktori, Anda dapat menggunakan perintah bash bawaan untuk mencapai hal yang sama:
file_count = 0 untuk file di/path/to/directory/* do ((file_count ++)) selesai12345 | file_count = 0 untuk file di/path/to/directory/*do ((file_count ++)) selesai |
Ini menghilangkan kebutuhan akan perintah eksternal, yang dapat membantu meningkatkan kinerja.
Kiat #3: Gunakan array
Menggunakan array untuk menyimpan barang -barang yang ingin Anda berikan dapat membantu meningkatkan efisiensi loop Anda. Ini karena array lebih efisien daripada menggunakan serangkaian nilai yang dipisahkan ruang.
Misalnya, alih-alih menggunakan daftar nilai-nilai yang dipisahkan ruang seperti ini:
untuk nilai dalam nilai1 value2 value3 value4 do [command (s)] selesai1234 | untuk nilai dalam nilai1 value2 value3 value4do [command (s)] selesai |
Anda dapat menggunakan array seperti ini:
values = ("value1" "value2" "value3" "value4") untuk nilai dalam "values [@]" do [command (s)] selesai12345 | values = ("value1" "value2" "value3" "value4") untuk nilai dalam "values [@]" do [command (s)] selesai |
Ini dapat membantu meningkatkan kinerja dengan mengurangi overhead parsing string ke dalam nilai individu.
Tip #4: Gunakan Ekspansi Parameter Shell
Menggunakan Ekspansi Parameter Shell dapat membantu menyederhanakan loop untuk Anda dan meningkatkan kinerja dengan mengurangi jumlah perintah yang perlu Anda jalankan.
Misalnya, alih -alih menggunakan perintah eksternal untuk menemukan panjang array, Anda dapat menggunakan ekspansi parameter shell seperti ini:
nilai = ("value1" "value2" "value3" "value4") untuk ((i = 0; i<$#values[@]; i++)) do [command(s) "values[i]"] done12345 | nilai = ("value1" "value2" "value3" "value4") untuk ((i = 0; i<$#values[@]; i++))do [command(s) "values[i]"]done |
Ini menghilangkan kebutuhan akan perintah eksternal, yang dapat membantu meningkatkan kinerja.
Kiat #5: Gunakan perintah bawaan Bash
Bash memiliki sejumlah perintah bawaan yang dapat membantu meningkatkan efisiensi loop Anda. Misalnya, Anda dapat menggunakan perintah printf untuk mencetak output yang diformat dalam loop Anda, yang bisa lebih efisien daripada menggunakan perintah eksternal seperti gema.
untuk saya di 1 ... 10 do printf "Number %d \ n" "$ i" selesai1234 | untuk saya di 1 ... 10 do printf "Number %d \ n" "$ i" selesai |
Ini dapat membantu meningkatkan kinerja dengan mengurangi overhead meluncurkan perintah eksternal.
Kesimpulan
Sebagai kesimpulan, menulis efisien untuk loop dalam bash dapat secara signifikan meningkatkan kinerja skrip Anda dan mengurangi waktu eksekusi mereka. Dengan menerapkan tips dan trik yang dibahas dalam artikel ini, seperti meminimalkan penggunaan perintah eksternal, mengurangi jumlah iterasi, dan menggunakan teknik paralelisasi, Anda dapat mengoptimalkan skrip bash Anda untuk memproses data lebih cepat dan efisien secara efisien dan efisien.
Terlepas dari bahasa yang Anda pilih, kunci untuk menulis skrip yang efisien adalah dengan terus menganalisis dan mengoptimalkan kode Anda, menguji pendekatan yang berbeda, dan selalu mengingat kinerja. Dengan prinsip -prinsip ini dalam pikiran, Anda dapat membuat skrip yang kuat dan efisien yang dapat menangani bahkan tugas pemrosesan data yang paling menuntut.