TINGKAT:SYSADMIN / WAKTU:1-2 mnt.
Berikut adalah beberapa contoh referensi cepat yang berguna untuk kembali dengan mudah jika Anda perlu menggunakan for, while dan hingga loop dalam skrip bash shell Anda. Ini sempurna untuk bookmark dan kembali lagi nanti. Saya selalu lupa perbedaan sintaks halus yang dimiliki bash, dibandingkan dengan bahasa lain yang saya gunakan, misalnya C, PHP, Python dll.
Sebelum saya menunjukkan contohnya, ada baiknya mengetahui kapan harus menggunakan setiap jenis loop:
- untuk loop sedikit berbeda dari bahasa pemrograman lainnya. Pada dasarnya, ini memungkinkan Anda mengulangi serangkaian item dalam sebuah string.
- sementara loop menjalankan item yang akan dieksekusi jika ekspresi kontrol benar, dan hanya berhenti jika salah (atau jeda eksplisit ditemukan dalam kode yang dieksekusi.
- Itu sampai loop hampir identik dengan loop while, kecuali bahwa kode dieksekusi saat ekspresi kontrol bernilai false.
UNTUK Contoh 1:Pengulangan sederhana
Jenis perulangan sederhana ini hanya menghitung nilai yang diberikan. Dalam hal ini, dimulai dari 1 dan berlanjut ke 5. Ini adalah pengulangan paling dasar.
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Hello, I've done this loop $i times"
done
UNTUK Contoh 2:Ulangi tindakan 50 kali:
Pengulangan dapat dilakukan dengan mulai dari suatu nilai dan menambah penghitung. Ini seperti yang Anda lakukan dalam bahasa pemrograman yang lebih konvensional. Satu-satunya hal yang harus Anda ingat adalah menggunakan (( untuk menyatakan perhitungan numerik.
#!/bin/bash
for ((i=1;i<=50;i++));
do
# your command, eg: echo $i
done
Contoh ini melakukan apa yang seharusnya dilakukan. Tetapi ada cara yang lebih mudah yang tidak harus membuat Anda mengingat tanda kurung ganda yang sedikit esoteris. Lihat contoh di bawah ini.
UNTUK Contoh 3:Bekerja dengan rentang numerik
Rentang
Terkadang Anda mungkin perlu menetapkan nilai langkah (misalnya, menghitung dengan dua atau menghitung mundur ). Perhatikan bahwa bash versi 3.0+ memiliki dukungan bawaan untuk menggunakan rentang, tetapi tidak terlalu praktis untuk rentang langkah:
#!/bin/bash
for i in {1..5}
do
echo "This is the $i iteration of this loop"
done
Melangkah:
#!/bin/bash
for i in {1..5}
do
echo "This is the $i iteration of this loop"
done
Sebagian besar distribusi Linux modern menjalankan Bash v4.0+, yang memiliki dukungan bawaan untuk menyiapkan nilai langkah menggunakan {START.. SELESAI.. INCREMENT} sintaks:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
do
echo "This is the $i iteration of this loop"
done
Keluaran:
This is the 0 iteration of this loop
This is the 2 iteration of this loop
This is the 4 iteration of this loop
This is the 6 iteration of this loop
This is the 8 iteration of this loop
This is the 10 iteration of this loop
UNTUK Contoh 4:Mengerjakan kata, argumen, dan keluaran perintah
Sebelumnya kami telah mengerjakan rentang numerik, tetapi masalahnya adalah loop FOR mengevaluasi argumen daripada angka, angka hanyalah . Ini berarti Anda dapat memerintahkannya untuk beroperasi pada setiap iterasi berbasis baris. Misalnya berikut ini akan melakukan perintah ls. Untuk setiap item yang dilihatnya akan menggemakan baris. Perhatikan bahwa ini berfungsi pada serangkaian kata, bukan daftar baris. Jadi jika Anda menggunakan ls -l, itu tidak akan memberikan hasil yang berguna, perhatikan juga, jika Anda memiliki nama file dengan spasi di dalamnya, itu akan menafsirkannya sebagai kata yang berbeda (argumen yang dipasok ke untuk ).
#!/bin/bash
for i in $( ls *txt ); do
echo item: $i
done
WHILE Contoh:
Sementara dasarnya mengemulasi bahasa pemrograman yang lebih klasik untuk struktur loop:
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
SAMPAI Contoh:
#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done