Döngü "için" nasıl bir döngü yazmak için

Kabuk betiklerinde BASH "for" döngüsü nasıl kullanılır?

BASH (Bourne Again Shell'in kısaltmasıdır) çoğu Linux ve UNIX tabanlı işletim sistemi tarafından kullanılan bir betik dilidir.

Bir terminal penceresinde BASH komutlarını birbiri ardına çalıştırabilir ya da bir komut dosyası oluşturmak için komutları bir metin dosyasına ekleyebilirsiniz.

Kabuk betikleri yazmanın en güzel yanı, onları tekrar tekrar çalıştırabilmenizdir. Örneğin, bir kullanıcıyı bir sisteme eklemeniz, izinlerini ayarlamanız ve başlangıç ​​ortamlarını yönetmeniz gerektiğini hayal edin. Komutları bir kağıda yazabilir ve yeni kullanıcılar ekledikçe bunları çalıştırabilir veya tek bir komut dosyası yazabilir ve sadece bu komut dosyasına parametreleri iletebilirsiniz.

BASH gibi betik dilleri diğer dillerle benzer programlama yapılarına sahiptir. Örneğin , klavyeden giriş almak ve bunları değişken olarak saklamak için içe aktarma parametrelerini kullanabilirsiniz. Komut dosyası , giriş parametrelerinin değerine göre belirli bir eylem gerçekleştirecek şekilde alabilirsiniz.

Herhangi bir programlama ve komut yazma dilinin önemli bir parçası, aynı kod parçasını tekrar tekrar çalıştırma yeteneğidir.

Kodu tekrarlamak için çeşitli yollar vardır (ayrıca döngüler olarak da bilinir). Bu kılavuzda, "for" döngüsünün nasıl yazılacağı gösterilecektir.

Bir döngü, kodun belirli bir bölümünü tekrar tekrar tekrarlar. Bir dizi komutun, belirli bir koşul yerine getirilinceye kadar çalışmaya devam edebilmeleri için yararlıdırlar, bundan sonra dururlar.

Bu kılavuzda, BASH komut dosyasında for döngüsünü kullanmanın beş yolu gösterilecektir.

Başlamadan önce

For döngü örneklerine başlamadan önce bir terminal penceresi açmanız ve şu adımları uygulamanız gerekir:

  1. Mkdir komut dosyalarını girin ( burada mkdir hakkında daha fazla bilgi edinin )
  2. CD komut dosyalarını girin (bu , dizini komut dosyalarına dönüştürür )
  3. Nano examplen.sh girin ( n üzerinde çalıştığınız örnek)
  4. Komutu girin
  5. Kaydetmek için CTRL + O tuşlarına ve çıkmak için CTRL + X tuşlarına basın
  6. Bash examplen.sh dosyasını çalıştırın (tekrar, n ile çalıştığınız örnek)

Bir Listeden Nasıl Dönülür?

#! / Bin / bash
1 2 3 4 5 sayı için
yap
echo $ number
tamam
0'dan çık

"For" döngülerini kullanmanın BASH yolu, diğer programlama ve kodlama dillerinin "for" döngülerinin işleyiş şeklinden biraz farklıdır. Senaryoyu bozalım ...

BASH "for" döngüsünde, yapılan ve yapılanlar arasındaki ifadeler, listedeki her öğe için bir kez yapılır .

Yukarıdaki örnekte, liste kelimeden sonra gelen her şeydir (örn. 1 2 3 4 5).

Döngü yinelendiğinde, listedeki bir sonraki değer "for" kelimesinden sonra belirtilen değişkene eklenir. Yukarıdaki döngüde, değişken numara olarak adlandırılır.

Eko ifadesi, ekrana bilgi görüntülemek için kullanılır.

Bu nedenle, bu örnek 1'den 5'e kadar olan sayıları alır ve bunları ekrana tek tek gönderir:

Başlangıç ​​ve Bitiş Noktası Arasındaki Döngü Nasıl Dönülür?

Yukarıdaki örnekle ilgili sorun, daha büyük bir listeyi (1'den 500'e kadar) işlemek istiyorsanız, tüm sayıların ilk sırada yazılması zaman alacaktır.

Bu bizi bir başlangıç ​​ve bitiş noktası belirtmeyi gösteren ikinci örneğe getirir:

#! / Bin / bash
{1..10} numaralı telefon için
yap
echo "$ number"
tamam
0'dan çık

Kurallar temelde aynıdır. " In" kelimesinden sonraki değerler, listeyi tekrarlamak için listeyi oluşturur ve listedeki her bir değer, değişkene (yani sayıya) yerleştirilir ve döngü her yinelendiğinde, yapılan ve yapılanlar arasındaki ifadeler uygulanır.

Ana fark, listenin oluşturulma şeklidir. Kıvrık parantezler {} temel olarak bir aralığı belirtir ve bu durumda aralık 1 ila 10'dur (iki nokta bir aralığın başlangıcını ve sonunu ayırır).

Bu örnek, bu nedenle, 1 ile 10 arasındaki her sayıdan geçer ve sayıyı aşağıdaki gibi ekrana gönderir:

Aynı döngü, ilk örneğe benzer sözdizimi ile şöyle yazılabilirdi:

1 2 3 4 5 6 7 8 9 10

Bir Menzildeki Numaraları Atla

Önceki örnek, bir başlangıç ​​ve bitiş noktası arasında nasıl döngü yapılacağını gösterdi, şimdi de aralıktaki sayıları nasıl atlayacağımızı göreceğiz.

0 ile 100 arasında döngü yapmak istediğinizi düşünün, ancak sadece her onuncu sayısını gösterin. Aşağıdaki betik bunun nasıl yapıldığını gösterir:

#! / Bin / bash
{0..100..10} sayı için
yap
echo "$ number"
tamam
0'dan çık

Kurallar temelde aynıdır. Bir liste, bir değişken ve yapılacaklar arasında yapılan bir dizi ifade vardır. Liste bu zamana benziyor: {0..100..10}.

İlk sayı 0 ve son numara 100'dür. Üçüncü sayı (10) listede atlanacak olan öğe sayısıdır.

Yukarıdaki örnek, bu nedenle, aşağıdaki çıktıyı görüntüler:

Döngü İçin Daha Geleneksel Bir Görünüm

Döngüleri için BASH yazma yolu, diğer programlama dillerine kıyasla biraz garip.

Bununla birlikte, C programlama diline benzer bir tarzda bir for döngüsü yazabilirsiniz, bunun gibi:

#! / Bin / bash
için ((sayı = 1; sayı <100; sayı ++))
{
eğer (($ number% 5 == 0))
sonra
echo "$ number 5 ile bölünebilir"
fi
}
0'dan çık

Döngü, değişken numarasını 1'e ayarlayarak başlar (sayı = 1 ). Döngü, bir sayının değeri 100'ün altında iken ( sayı <100 ) yinelenmeye devam edecektir. Sayının değeri, her yinelemeden sonra 1'e ekleyerek değişir ( sayı ++ ).

Küme parantezleri arasındaki her şey, döngünün her yinelemesinde gerçekleştirilir.

Parantezler arasındaki bit, bir sayının değerini kontrol eder, 5 ile böler ve kalanı 0 olarak karşılaştırır. Kalan 0 ise, sayı 5 ile bölünebilir ve ekranda görüntülenir.

Örneğin:

Yinelemenin adım büyüklüğünü değiştirmek isterseniz, sayı = sayı + 2 , sayı = sayı + 5 veya sayı = sayı + 10 vb.

Bu, + = 2 veya sayı + = 5 sayısına daha da düşebilir.

Pratik Bir Örnek

Döngüler için numaraların yinelenen listelerinden daha fazlasını yapabilir. Aslında diğer komutların çıktısını liste olarak kullanabilirsiniz.

Aşağıdaki örnek, ses dosyalarını MP3’ten WAV’a nasıl dönüştüreceğinizi gösterir:

#! / Bin / bash

Bu örnekteki liste, geçerli klasördeki .MP3 uzantılı her dosyadır ve değişken bir dosyadır .

Mpg komutu MP3 dosyasını WAV'a dönüştürür. Ancak, muhtemelen öncelikle bunu paket yöneticinizi kullanarak yüklemeniz gerekir.