Çoğu programlama dilinde olduğu gibi, bash betiklerinin bazen ilgili değerler listesiyle ilgilenmesi gerekir. En basit biçim standart dizidir.
Bash'de dizi programlama, özellikle sözdizimi söz konusu olduğunda oldukça farklıdır. Bash dizileri de kesinlikle tek boyutludur, ancak yine de birçok kullanımları vardır.
Bash Dizilerinin Temel Sözdizimi
Bash'de bir dizi oluşturmak basittir. Tüm bir diziyi parantez kullanarak başlatabilirsiniz, örneğin:
şehir=(Londra Paris Milano "New York")
(Bu şehir örneğindeki tüm kodları şurada bulabilirsiniz: bu GitHub Özeti.)
Bu, 0'dan 3'e kadar indekslenmiş dört eleman içeren bir dizi oluşturur. Dördüncü değerin, iki kelimeden oluşan tırnak içine alınmış bir dize olduğuna dikkat edin. Ayrı değerler olmadıklarını netleştirmek için boşluk içeren değerleri alıntılamanız gerekir.
Programlama dillerinde yaygın olan köşeli ayraç sözdizimini kullanarak tek bir öğeye erişebilirsiniz:
şehir[2]
Bu bash olduğundan, değeri bir ifadede gerçekten kullanmak için birkaç iyileştirmeye ihtiyacınız olacak:
- Dolar işaretini başa eklemeniz gerekecek ($) değişken adına.
- Ayrıca parantez kullanmanız gerekecek ({}) değişken adını net hale getirmek için. Varsayılan olarak, bash tedavi edecek $şehir[2] adlı bir değişken olarak Kent. Bash'e parantezleri ve dizin numarasını da değerlendirmesini söylemek için parantez ekleyin.
Standart bash dizisi erişim sözdizimi şu şekildedir:
${değişken_adı[indeks]}
İşte tam bir örnek:
#!/bin/bash
şehir=(Londra Paris Milano "New York")
yankı ${şehir[3]}
# New York
Bir diziyi bir kerede başlatmak yerine, ona adım adım atayabilirsiniz. Bu komut dosyası, önceki örneğin daha uzun bir eşdeğeridir:
#!/bin/bash
şehir[0]=Londra
şehir[1]=Paris
şehir[2]=Milan
şehir[3]="New York"
yankı ${şehir[3]}
# New York
Her iki durumda da eşittir işaretinin etrafına boşluk bırakmamaya dikkat etmeniz gerektiğini unutmayın. Eşittir işaretinin etrafında boşluk bulunan "şehir[0] = Londra" bir hata üretecektir.
Bash Dizileri için Daha Fazla Kullanım
Diziler, ilgili verileri depolamak için mükemmeldir. Bir sayının karekökünü almak için (çok sınırlı) bir kabuk betiği:
#!/bin/bash
kare[1]=1
kare[4]=2
kare[9]=3
kare[16]=4
kare[25]=5
yankı ${sqrt[$1]}
Komut dosyasının değeri kullandığını unutmayın $1 dizi indeksi olarak. $1 betiğin aldığı ilk komut satırı argümanını temsil eder, böylece bu betiği şu şekilde çalıştırabilirsiniz:
$ ./sqrt.sh 9
3
farkında olabilirsin $(cmd) bir komutu yürütmek ve çıktısını bir değişkene kaydetmek için sözdizimi. Çalışmak üzere bir dizi dosya elde etmek için bunu dizi başlatma sözdizimi ile birleştirebilirsiniz:
dizi=( $(ls))
Bir dizi genellikle yineleme için mükemmel bir veri yapısı ve Bash bir istisna değildir. Her öğeyi yazdırmak veya her üye üzerinde bir işlem gerçekleştirmek için bir dizide dolaşabilirsiniz.
Bir diziyi adresleyebilirsiniz a için.. içinde döngü, içeriğini yinelemek için. Örneğin, dizideki her dosyadaki satır sayısını yazdıran basit bir döngü burada varış:
"${arr[@]}" içindeki dosya için; yapmak
wc -l "$dosya"
tamamlamak
# 3 ortam
# 547 httpd.conf
# ...
Bu desenin aşağıdakilerden yararlandığını unutmayın: @ dizideki tüm öğeleri almak için sembol.
Daha Fazla Bash Dizi Sözdizimi
Aşağıdakileri kullanarak bir dizideki öğelerin sayısını alabilirsiniz:
yankı ${#şehir[@]}
# 4
Aşağıdaki gibi standart bir dizinin sonuna yeni bir öğe ekleyebilirsiniz:
dizi+=(4)
Yani listeye beşinci bir şehir eklemek için:
şehir+=(Roma)
yankı ${şehir[@]}
# Londra Paris Milano New York Roma
Bir dizinin bir parçasını çıkarmak için, diğer birçok dilin dilim işlemine yaklaşan bir sözdizimi kullanabilirsiniz:
${arr[@]:s: n}
Bu sözdizimi, konumundan başlayarak dizinin bir dilimini döndürür. s ve içeren n öğeler. atlayabilirsiniz :n tüm öğeleri çıkarmak için bölüm s listenin sonuna kadar.
echo ${şehir[@]:2:2}
#Milan New York
echo ${şehir[@]:3}
#New York Roma
Bash'in Birçok Özelliği Vardır, Sadece Biraz Öğrenirler
Bash'deki dizilerin sınırlamaları olabilir, ancak çoğu programlama dilinde olduğu gibi aynı temel işlevleri sunarlar. Bash tarihsel olarak yalnızca basit tek boyutlu dizileri desteklemiş olsa da, zaman değişiyor. Bash'in en son sürümü olan 4, ilişkisel dizileri ve negatif dizi indekslemeyi destekler.
Hangi bash sürümünü kullanırsanız kullanın, nüanslarını anlamak önemlidir. Normal değişken sözdiziminde bile birçok özdeyiş vardır.
Bash Değişkenleri Açıklaması: Örneklerle Basit Bir Kılavuz
Sonrakini Oku
İlgili konular
- Programlama
- Linux
- Programlama
- Linux Bash Kabuğu
- komut dosyası
Yazar hakkında
Bobby, yirmi yıldan fazla bir süredir yazılım geliştiricisi olarak çalışan bir teknoloji tutkunu. MUO'da Programlama bölümünün Küçük Editörüdür. Oyun konusunda tutkulu, Switch Player Magazine'de Genel Yayın Yönetmeni olarak çalışıyor ve çevrimiçi yayıncılık ve web geliştirmenin tüm yönleriyle ilgileniyor.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın