Bash Aralığı: Kabukta oluşturulan diziler üzerinde nasıl yinelenir

Bash Range How Iterate Over Sequences Generated Shell



Bash'de sayı dizisini iki şekilde yineleyebilirsiniz. Biri kullanarak sıra komut ve diğeri, döngü için aralık belirterekdir. İçinde sıra komutu, dizi birden başlar, sayı her adımda bir artar ve varsayılan olarak üst sınıra kadar her satırdaki her sayıyı yazdırır. Sayı üst sınırdan başlıyorsa, her adımda bir azalır. Normalde, tüm sayılar kayan nokta olarak yorumlanır, ancak dizi tamsayıdan başlarsa ondalık tamsayıların listesi yazdırılır. seq komutu başarıyla yürütülebilirse 0, aksi takdirde sıfır olmayan herhangi bir sayı döndürür. Ayrıca, aralıklı for döngüsü kullanarak sayıların sırasını yineleyebilirsiniz. Her ikisi de sıra komut ve aralıklı döngü için bu öğreticide örnekler kullanılarak gösterilmiştir.

seq komutunun seçenekleri:

Kullanabilirsiniz sıra aşağıdaki seçenekleri kullanarak komut verin.







-içinde

Bu seçenek, tüm sayıları eşit genişlikte yazdırmak için sayıları baştaki sıfırlarla doldurmak için kullanılır.



-f biçimi

Bu seçenek, belirli bir biçimde sayı yazdırmak için kullanılır. Kayan sayı, dönüşüm karakterleri olarak %f, %g ve %e kullanılarak biçimlendirilebilir. %g varsayılan olarak kullanılır.



-s dizesi

Bu seçenek, sayıları dize ile ayırmak için kullanılır. Varsayılan değer yeni satırdır (' ').





seq komutu örnekleri:

seq komutunu üç şekilde uygulayabilirsiniz. Her adımın artış veya azalış değeri ile sadece üst limit veya üst ve alt limit veya üst ve alt limit kullanabilirsiniz. Aşağıdaki örneklerde seçeneklerle birlikte seq komutunun farklı kullanımları gösterilmiştir.

Örnek-1: seçeneksiz seq komutu

Yalnızca üst sınır kullanıldığında, sayı 1'den başlayacak ve her adımda bir artırılacaktır. Aşağıdaki komut, 1'den 4'e kadar olan sayıyı yazdıracaktır.



$sıra 4

Çıktı:

İki değer seq komutu ile kullanıldığında ilk değer başlangıç ​​numarası, ikinci değer bitiş numarası olarak kullanılacaktır. Aşağıdaki komut, sayıyı 7'den 15'e yazdıracaktır.

$sıra 7 on beş

Çıktı:

seq komutu ile üç değer kullanacağınız zaman ikinci değer her adım için artım veya eksiltme değeri olarak kullanılacaktır. Aşağıdaki komut için başlangıç ​​numarası 10, bitiş numarası 1'dir ve her adım 2 azaltılarak sayılacaktır.

$sıra 10 -2 1

Çıktı:

Örnek-2: –w seçeneği ile seq

Aşağıdaki komut, 1'den 9'a kadar olan sayının başına sıfır ekleyerek çıktıyı yazdıracaktır.

$sıra -içinde0110

Çıktı:

Örnek-3: –s seçeneği ile seq

Aşağıdaki komut, her sıra numarası için ayırıcı olarak - kullanır. Sayı dizisi, ayırıcı olarak - eklenerek yazdırılacaktır.

$sıra -s-8

Çıktı:

Örnek-4: -f seçeneğiyle seq

Aşağıdaki komut 1'den başlayarak 10 adet tarih değeri yazdıracaktır. Burada %g seçeneği ile diğer string değeri ile sıra numarası eklemek için kullanılır.

$sıra -F '%g/04/2018' 10

çıktı:

Bash Aralığı

%f kullanarak kayan noktalı sayı dizisini oluşturmak için aşağıdaki komut kullanılır. Burada sayı 3'ten başlayacak ve her adımda 0,8 artacak ve son sayı 6'dan küçük veya ona eşit olacaktır.

$sıra -F '%F' 3 0,8 6

Çıktı:

Örnek-5: Diziyi bir dosyaya yazın

Konsolda yazdırmadan sayı dizisini bir dosyaya kaydetmek istiyorsanız aşağıdaki komutları kullanabilirsiniz. İlk komut, sayıları adlı bir dosyaya yazdıracaktır. seq.txt . Sayı 5'ten 20'ye kadar üretilecek ve her adımda 10 artacaktır. İkinci komut, içeriği görüntülemek için kullanılır. seq.txt dosya.

$ sıra 5 10 20 | kedi > seq.txt
$ kedi seq.txt

Çıktı:

Örnek-6: Döngü için seq in kullanma

seq ile for döngüsü kullanarak fn1 ila fn10 adlı dosyalar oluşturmak istediğinizi varsayalım. sq1.bash adında bir dosya oluşturun ve aşağıdaki kodu ekleyin. For döngüsü, seq komutunu kullanarak 10 kez yinelenecek ve fn1, fn2,fn3…..fn10 dizisinde 10 dosya oluşturacaktır.

#!/bin/bash
içinbeniçinde ``sıra 10``
yapmak
dokunmafn.$ ben
tamamlamak

Çıktı:

Bash dosyasının kodunu çalıştırmak için aşağıdaki komutları çalıştırın ve dosyaların oluşturulup oluşturulmadığını kontrol edin.

$bashsq1.bash
$ls

Aralıklı for döngüsü örnekleri:

Örnek-7: Menzilli döngü için

seq komutunun alternatifi aralıktır. seq gibi sayı dizileri oluşturmak için range in for döngüsünü kullanabilirsiniz. Aşağıdaki kodu adlı bir bash dosyasına yazın sq2.bash . Döngü 5 kez yinelenecek ve her adımda her sayının karekökünü yazdıracaktır.

#!/bin/bash
içinniçinde {1..5}
yapmak
((sonuç=n*n))
dışarı attı $n Meydan=$sonuç
tamamlamak

Çıktı:

Dosyanın komut dosyasını yürütmek için komutu çalıştırın.

$bashsq2.bash

Örnek-8: Aralık ve artış değerine sahip döngü için

Varsayılan olarak, sayı seq gibi aralıktaki her adımda birer birer artırılır. Aralıktaki artış değerini de değiştirebilirsiniz. Aşağıdaki kodu adlı bir bash dosyasına yazın sq3.bash . Komut dosyasındaki for döngüsü 5 kez yinelenir, her adım 2 artırılır ve 1 ile 10 arasındaki tüm tek sayıları yazdırır.

#!/bin/bash
dışarı attı '1'den 10'a kadar tüm tek sayılar vardır'
içinbeniçinde {1..10..2}
yapmak
dışarı attı $ ben;
tamamlamak

Çıktı:

Dosyanın komut dosyasını yürütmek için komutu çalıştırın.

$bashsq3.bash

Sayı dizisiyle çalışmak istiyorsanız, bu eğitimde gösterilen seçeneklerden herhangi birini kullanabilirsiniz. Bu öğreticiyi tamamladıktan sonra, bash betiğinizde seq komutunu ve aralıklı döngü için daha verimli bir şekilde kullanabileceksiniz.