Bash 'While' Döngüsü: Öğretici ve Örnekler

Komutları yinelemek için Bash komut dosyasında 'while' döngüsünü kullanma.

Bash (Bourne Again Shell), GNU/Linux işletim sistemlerinde bir kabuk komut istemi ve betik dilidir. Çoğu Linux dağıtımı için varsayılan kabuktur.

Çoğu betik dili gibi Bash, benzer görevleri birden çok kez tekrarlamak için döngü sözdizimleri sağlar. Bu yazımızda nasıl kullanılacağını öğreneceğiz. sırasında Bash'de döngü.

Tanıtım

bu sırasında Bash'deki döngü, başka bir komutun (koşul komutlarının) çıktısına bağlı olarak komutları (yürütülen komutları) birden çok kez yürütmek için kullanılır. Yürütülen komutlar, koşul komutu başarıyla çalışana kadar çalışmaya devam eder (yani, 0 durumu döndürür. Linux'taki herhangi bir komut, başarı için 0 ve başarısızlık için sıfır olmayan bir tamsayı döndürür).

Birden çok koşul komutu varsa, ifade yalnızca listedeki son komutun durumunu dikkate alır, yani döngü, listedeki son komut başarıyla çalışana kadar yürütülür.

Genel Sözdizimi

için genel sözdizimi sırasında Bash'deki döngü:

yapılırken

Yürütme komut listesi, koşul komut listesindeki son komut başarıyla çalışana ve 0 durumuyla çıkana kadar çalışmaya devam eder. Yinelemede, son koşul komutu başarısız olduğunda döngüden çıkar.

Kullanıcı, komut listelerinde herhangi bir yürütülebilir dosyayı belirtebilir. Standart Linux programları veya özel kullanıcı programları veya komut dosyaları olabilir. Her komut ya yeni bir satırda olmalı ya da aynı satırda noktalı virgülle ayrılmalıdır.

Birkaç örnek görelim.

Bir değişken belirli bir değere sahip olana kadar döngü: Aşağıdaki döngü, değişkenin değerine kadar yürütülür. x 10'a eşit değildir.

x=0 iken [[ $x -ne 10 ]] do echo $x ((x++)) yapıldı

Her yinelemede, x'in değerinin 10 olup olmadığını kontrol ediyoruz. Değer, kullanılarak kontrol ediliyor. Ölçek emretmek. [[ İfade ]] test komutunun sözdizimidir (Bkz. adam testi). Burada kullandığımızdan beri -ne operatörü ("eşit değildir" anlamına gelir), test komutu 0, yani x'in değeri 10 değilse başarı, sıfır olmayan bir değer, yani x'in değeri 10 ise başarısızlık döndürür.

sonra içinde yap...bitti bloğunda x'in değerini yazdırıyoruz ve artırıyoruz. x'in değeri 10 olduğunda, test komutu sıfır olmayan duruma döner ve döngüden çıkar.

Not: while döngüsünde kullanılacak indeks değişkeni, bir değişkeni dolaylı olarak başlatmayı sağlayan for döngüsünün aksine, while döngüsünden önce veya koşul komutlarında başlatılmalıdır.

Çoklu koşul komutlarıyla: Aşağıdaki döngü adlı 5 dizin oluşturur yön0, yön1, ... yön4.

z=0 while echo "Dosya listesi:" ls -l [[ $z -ne 5 ]] do echo "dir$z oluşturuluyor..." mkdir dir$z ((z++)) yapıldı

İlk komutlar echo "Dosya listesi:" ve ls -l bir kez tamamen yürütülecek; başarılarının veya başarısızlıklarının, döngünün ne kadar süreceği üzerinde hiçbir etkisi yoktur.

Ardından, z değişkeninin değerini kontrol etmek için test komutu yürütülür. z değeri 5 olmayana kadar test komutu başarı durumunu döndürür ve bu nedenle döngü çalışmaya devam eder. Koşul komutları ve yürütülen komutlar sırayla çalışmaya devam eder. Burada, her yineleme için, önce echo komutunu ve ls komutunu koşulda çalıştırır ve ardından 3. koşul komutu z'nin değerini kontrol eder. 5 değilse döngüye girer ve verilen komutları yürütür.

Ara ve Devam Et

Koşullu Çıkış için Break İfadesi

Koşullu ifadeyi de kullanabiliriz Eğer döngü içinde. bu Eğer ifadesi ile kullanılabilir kırmak döngüden koşullu çıkış için.

x=0 iken [[ $x -ne 10 ]] yapın, eğer [[ $x -eq 5 ]] break fi echo $x ((x++)) yapılır

Yukarıdaki while döngüsü 0'dan 4'e kadar olan sayıları yazdıracaktır. Ardından i'nin değeri 5 olduğunda, döngüden çıkacaktır. Bu, bir komut belirli bir çıktı verdiğinde bir döngüden çıkılacağı zaman özellikle kullanışlıdır.

Bir Yinelemeyi Koşullu Olarak Atlamak için İfadeye Devam Et

Bash'in ayrıca bir devam et deyimi, belirli bir koşul karşılanıyorsa, bir döngüdeki yinelemenin kalan kısmını atlamak için.

x=0 iken [[ $x -ne 10 ]] yap if [[ $x -eq 5]] devam et fi echo $x ((x++)) yapıldı

Yukarıdaki döngü, 5 dışında 0'dan 10'a kadar olan sayıları yazdıracaktır, çünkü yineleme sırasında x=5 yineleme ile başlangıçta döngüdeki kodun geri kalanını atlayacak bir devam ifadesi vardır. x=6.

Döngüleri Kullanma: Komut Dosyaları ve Komut Satırı

Döngü sözdizimleri, Bash kabuğunda doğrudan veya yürütülebilir bir kabuk komut dosyasından kullanılabilir. Benzer için ve sırasında döngüler, bir kez sırasında kabuğa döngü sözdizimi girilirse, kabuk, kullanıcının döngülenecek komutları sürdürmesine izin vermek için komut istemini sürdürür.

Veya kullanıcı bunu bir komut dosyasına kaydedebilir ve komut dosyasını çalıştırabilir.

bu #!/bin/bash başlangıçta dosya yürütüldüğünde kullanılacak yorumlayıcıyı belirtir. Bash, günümüzde en yaygın kullanılan kabuk olmasına rağmen, bazı kullanıcılar aşağıdaki gibi kabukları tercih eder: zsh, bu dosyanın başında bash yerine belirtilmelidir.

Yürütme izinleri vermek için bu dosya için şunu çalıştırın:

chmod +x testi.sh

Nihayet, dosyayı yürütmek için, Çalıştırmak:

./test.sh

Çözüm

bu sırasında döngü, benzer için ve a kadar döngüler, Bash komut dosyası oluşturmada önemli bir özelliktir. while döngüsü, belirli bir program başarılı olduğunda alternatif komutları/programları çalıştırmak için kullanılması dışında, kadar döngüsüne benzer bir kullanıma sahiptir. Bu genellikle yararlılığını gelişmiş ağ komut dosyalarında, sistem bakım komut dosyalarında vb. bulur.