Bash betiklerinde kullanılabilen çeşitli döngü türleri vardır. döngüler için, döngüler boyunca ve döngüler boyunca.
Kavramsal olarak, bir dizideki her öğeyi veya bir dizindeki her dosyayı yinelemek gibi bir dizi öğeyi yinelemek için bir for döngüsü kullanılmalıdır. Belli bir koşul doğru olduğu sürece, örneğin numaralandırıcı a’nın a’dan küçük olması gibi, while döngüsü kullanılmalıdır. TRUE veya TRUE 1 ile döngü yapıyorsanız, sunucu için maksimum değer veya ping süresi sınırdan az veya sonsuza kadardır.
Çift döngü, while döngüsüne benzer, ancak tersi bir mantığa sahiptir. Koşul doğru olduğunda döngü yapmak yerine, koşulun yanlış olduğunu varsayar ve doğru olana kadar yinelersiniz. Mantıksal ifadede zıttırlar. Bir while döngüsü ile birçok döngü arasında doğru döngüyü seçmek, bir süre sonra kodunuza geri döndüğünüzde programınızın başkaları veya kendiniz için daha okunabilir ve anlaşılır olmasını sağlayacaktır.
Bir till döngüsünün kullanılmasına ilişkin bazı tipik örnekler veya nedenler, kullanıcı bir “exit” girene kadar döngü oluşturmaktır; Oluşturulan veri gerekli veri boyutundan daha büyük olana veya aramanızla eşleşen bir dizi dosya bulana kadar yinelemeli olarak döngü.
UNTIL döngüsünün temel yapısı şöyle görünür:
a kadar[ KOŞUL ]; yapmak
Kod satırları
Daha fazla kod satırı
tamamlamak
Şimdi bazı örnekler verelim. İlk örnek, 1000 boyut sınırına ulaşana kadar çoğalacaktır:
#! / kutu / bash
SAYI=1
a kadar[“$NUM“-gt1000]; yapmak
Eko$NUM
izin vermekSAYI= satın al*2
tamamlamak
İkinci örnek, yanıt süresi 100ms’den uzun olana kadar URL’ye ping göndermeye devam edecektir:
#! / kutu / bash
milisaniye=0
# 1000ms’den daha yavaş olana kadar ping atacağız
a kadar[$MILLISECONDS-gt1000]
yapmak
# Ping’i çalıştırın ve ping süresi = XXXX ms olan satırı çıkarın
Üretmek=“Zil sesi veya sinyal ile uyarı-c1 google.com.tr |grepzaman|awk-F= “{$NF yazdır}”“
EkoTest bağlantı süresi: çıktı $“
# Milisaniye tamsayısını dizeden çıkar
milisaniye=“Ekoçıktı $|awk“{1 $ yazdır}”|awk -F. “{1 $ yazdır}”“
Ekoms numarası = Milyon dolar“
uyumak1
tamamlamak
Eko“Ping süresi 1000 ms’yi aşıyor”
Üçüncü örnek, bir dosyayı alacak ve 1 KB olana kadar kendisiyle birleştirecektir:
#! / kutu / bash
dosya adı=“Birincil ad“0$”“
Ekodosya adı $
TMP_FILE=“./tmp1”
Hedef dosya=“./amaç”
kedidosya adı $>$TARGET_FILE
Dosya boyutu=0
# Dosya boyutunu 1KB’ye kadar artırın
a kadar[$DOSYASIZE-gt1024]
yapmak
# Bu dosyayı hedef dosyanın içeriğine ekleyin
CP$TARGET_FILE$tmp_file
kedi$tmp_file>>$TARGET_FILE
Dosya boyutu=“bu$TARGET_FILE|awk“{1 $ yazdır}”“
EkoDosya boyutu: bir dosya“
uyumak1
tamamlamak
Eko“Yeni dosya boyutu 1 KB hedefine ulaştı”
Dördüncü örnek, kullanıcıdan programdan çıkmak için exit yazarak adını girmesini isteyecektir:
#! / kutu / bash
cevap vermek=“fu”
# Dosya boyutunu 1KB’ye kadar artırın
a kadar[“$YANIT“ = “çıkış”]
yapmak
Eko-nBu programdan çıkmak için adınızı girin veya Çıkın:
Okuman cevap vermek
eğer[“$YANIT“!= “çıkış”]; Daha sonra
Eko“Hoş geldin $ yanıtı“
fi
tamamlamak
Eko“Bu oyunu oynadığın için teşekkür ederim”
çözüm
Anahtar nokta kullanmaktır a kadar Bir koşulun her zaman yanlış olması beklendiğinde ve ardından koşul doğru olduğunda döngü eylemini durdurmak istediğinizde kodu daha net hale getirmek için döngü. Başka bir deyişle, döngüde kalın a kadar zaman noktası. Bu açıdan bakıldığında, umarım bash betikleri daha anlaşılırdır ve bu makaleden bir şeyler öğrendim. Teşekkür ederim.
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın