Bash'te Dizin Dizilerini Kullanma

Bash Te Dizin Dizilerini Kullanma



Bash, esas olarak dizin numaraları kullanılarak erişilebilen öğelerin listeleri olan dizinlenmiş diziler için destek sağlar. Dizinlenmiş diziler, özellikle ilgili birçok değeri depolamak ve değiştirmek istediğinizde kullanışlıdır; dizin dizilerini nasıl kullanacağınızı öğrenmek için bu makalenin devamını okuyun.

Dizin Dizileri Nedir?

Dizinlenmiş diziler, bash'ta bir dizin veya anahtar kullanılarak erişilebilen bir öğeler koleksiyonudur. Bu diziler, verileri belirli bir sırayla depolamak ve almak için kullanılabilir, bu da büyük miktarda veriyi yönetmeyi kolaylaştırır. Bash'ta indekslenmiş bir dizi bildirmek için sözdizimi aşağıdaki gibidir:

< dizi_adı > = ( eleman1 eleman2 eleman3 ... )

Burada dizi_adı dizinin adıdır ve eleman1, eleman2, eleman3 vb. dizide saklanacak değerlerdir. Değerler boşlukla ayrılmıştır ve bir dizi oluşturmak için beyan komutunu da kullanabileceğinizi unutmayın.







Bash'te Dizine Alınmış Diziler Nasıl Kullanılır?

Bash'ta bir dizin dizisi oluşturmak için, bir değişken bildirmeniz ve ona parantezler içinde ve boşluklarla ayrılmış değerler atamanız yeterlidir. Dizinlenmiş dizilerin bash'ta nasıl kullanılacağını gösteren birkaç örnek:



Bash'te Listeyi Yeniden Sıralama

Belirli bir sıradaki öğeler listeniz varsa ve bunları farklı bir şekilde yeniden sıralamak istiyorsanız. Öğeler için yeni bir sipariş oluşturmak için aşağıdaki gibi bir dizin dizisi kullanabilirsiniz:



#!/bin/bash
öğeler = ( 'Mango' 'Ananas' 'Çilek' 'Kiraz' 'üzüm' )
emir = ( 4 2 0 3 1 )
için Ben içinde ' ${sipariş[@]} '
Yapmak
Eko ${öğeler[$i]}
Tamamlandı

Bu örnekte, beş öğeli öğeler adlı bir dizi oluşturuyoruz. Ayrıca, öğeler için yeni bir sıra belirten, order adında bir dizin dizisi oluşturuyoruz. Daha sonra sipariş dizisinde döngü yaparız ve her değeri, ilgili öğeyi öğeler dizisinden almak ve yazdırmak için bir dizin olarak kullanırız.





Bash'te bir Listeyi Filtreleme

Bir öğe listeniz varsa ve belirli öğeleri bir koşula göre filtrelemek istiyorsanız. Koşulu karşılayan öğelerin dizinlerini aşağıdaki gibi takip etmek için bir dizin dizisi kullanabilirsiniz:



#!/bin/bash
öğeler = ( 'Mango' 'Ananas' 'Çilek' 'Kiraz' 'üzüm' )
indeksler = ( )

için Ben içinde ' ${!öğeler[@]} '
Yapmak
eğer [ [ ${öğeler[$i]} == * 'R' * ] ]
Daha sonra
indeksler+= ( $ ben )
olmak
Tamamlandı

için Ben içinde ' ${endeksler[@]} '
Yapmak
Eko ${öğeler[$i]}
Tamamlandı

Bu örnekte, beş öğeli öğeler adlı bir dizi oluşturuyoruz. Ayrıca index adında boş bir index dizisi oluşturuyoruz. Daha sonra, öğeler dizisinde dolaşıyoruz ve her öğenin 'r' harfini içerip içermediğini kontrol ediyoruz. Varsa, dizinini index dizisine ekleriz. Son olarak, index dizisinde dolaşıyoruz ve her değeri, ilgili öğeyi items dizisinden almak ve çıktısını almak için bir indeks olarak kullanıyoruz.

Bash'te Oluşumları Sayma

Bir öğe listeniz varsa ve her öğenin tekrarlanma sayısını saymak istiyorsanız, sayıları takip etmek için bir dizin dizisi kullanabilirsiniz ve burada gösterim için bir örnek verilmiştir:

#!/bin/bash
öğeler = ( 'Mango' 'Ananas' 'Çilek' 'Kiraz' 'üzüm' )
sayar = ( )

için Ben içinde ' ${!öğeler[@]} '
Yapmak
eğer [ [ ! ' ${sayım[@]} ' =~ ' ${öğeler[$i]} ' ] ]
Daha sonra
sayar+= ( ' ${öğeler[$i]} 1' )
başka
dizin = $ ( Eko ' ${sayım[@]} ' | tr '' '\N' | kavramak -N '^ ${öğeler[$i]} ' | ile )
saymak = $ ( Eko ' ${sayılar[$index-1]} ' | kesmek -D '' -f2 )
sayar [ $ endeksi - 1 ] = ' ${öğeler[$i]} $((sayı+1) )'
olmak
Tamamlandı

için saymak içinde ' ${sayım[@]} '
Yapmak
Eko $ sayısı
Tamamlandı

İlk olarak, bir dizge listesiyle “items” adlı bir diziyi başlatır. Ardından 'counts' adında boş bir dizi bildirir. 'items' dizisindeki her öğe için yineleme yapmak üzere bir for döngüsü oluşturulur ve her öğe için 'counts' dizisinde zaten var olup olmadığını kontrol eder.

Mevcut değilse, öğeyi ve 1 sayısını 'counts' dizisine ekler. Varsa, 'counts' dizisindeki o öğenin sayısını artırır. Son olarak, her öğeyi ve karşılık gelen sayısını yazdırmak için başka bir for döngüsü kullanılır. Bu kodun çıktısı, 'items' dizisindeki her bir öğenin sayısını yazdıracak ve kopyalar ayrı ayrı sayılacaktır.

Bash'te Liste Güncelleme

Bir öğe listeniz varsa ve listeye öğe eklemek veya silmek istiyorsanız, bunun için bir dizin dizisi kullanabilirsiniz ve işte tanıtım için bir örnek:

#!/bin/bash
öğeler = ( 'Mango' 'Ananas' 'Çilek' 'Kiraz' 'üzüm' )

# Dizin 2'deki dizinlenmiş diziye yeni bir öğe ekleme
öğeler [ 6 ] = 'turuncu'
# İndekslenmiş diziden indeks 2'deki elemanın silinmesi
çöz öğeler [ 2 ]

# Güncellenen diziyi yazdırma
Eko ' ${öğeler[@]} '

Komut dosyasında, dizinlenmiş bir dizi 'öğeler', beş başlangıç ​​öğesiyle tanımlanır. Yeni bir öğe eklemek için değer, dizi[dizin]=değer sözdizimi kullanılarak istenen dizine atanır. Bu komut dosyasında, dizinin 6. dizinine “turuncu” eklenir. Bir öğeyi silmek için unset komutunu ve ardından kaldırmak istediğimiz öğenin dizinini kullanırız. Bu durumda, dizin 2'deki öğe (“Çilek”) silinir. Güncellenen dizi daha sonra tüm diziyi genişleten '${array[@]}' sözdizimi kullanılarak yazdırılır.

Çözüm

İndekslenmiş diziler, tek bir değişken kullanarak birden çok değeri depolamanıza ve değiştirmenize izin veren kullanışlı bir bash yapısıdır. İndekslenmiş dizilerin sözdizimini ve kullanımını anlayarak, daha verimli ve etkili bash betikleri yazabilirsiniz.