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.