Bir dizi değişkeni, birden çok dizinlenmiş veriyi depolamak için kullanılır ve her bir dizi öğesinin değerine, o öğeye karşılık gelen dizin değeriyle erişilir. Dizinin değerini bir işaretçi veya anahtar olarak saklayabilen bir diziye ilişkisel dizi denir. İlişkisel dizi, diğer herhangi bir programlama dili gibi bash betiklerinde bildirilebilir ve kullanılabilir. Bu özellik bash 4’te eklenmiştir. Bu öğretici, Bash’te ilişkisel dizilerin nasıl bildirileceğini ve bunlara nasıl erişileceğini açıklar.
Bu eğitimin bir sonraki bölümüne başlamadan önce mevcut Bash sürümünüzü kontrol edin. Hangi Bash sürümünün kurulu olduğunu kontrol etmek için Terminal’den aşağıdaki komutu çalıştırın. İşletim sisteminizde kurulu olan bash sürümü 4’ten küçükse, bu öğreticiyi takip etmek için önce bash’ın 4. sürümünü yüklemeniz gerekir.
Aşağıdaki çıktı, bash’ın geçerli sürümünün 4.4.19 olduğunu göstermektedir.
Sendika matrisinin duyurulması ve oluşturulması:
İlişkisel dizi, bash kullanılarak aşağıdaki gibi bildirilebilir: Bildiri Dizi öğeleri ve anahtar sözcükler, dizi bildirilirken veya dizi değişkeni bildirildikten sonra başlatılabilir. Aşağıdaki komut dosyası, adlandırılmış bir ilişkisel dizi oluşturacaktır.
Eşek Dört dizi değeri ayrı ayrı başlatılır.
$ Bildiri-a Eşek
$asArray1[meyve]= mango
$asArray1[kuş]= kokteyl
$asArray1[çiçek]= Gül
$asArray1[hayvan]= Kaplan
üretim |
Aşağıdaki betik ilişkisel diziyi başlatacak, Eşek matrisi bildirirken. Burada dizi bildirimi sırasında üç anahtarlı dizi değeri belirtilir.
$ Bildiri-aEşek=([HDD]= Samsun [monitör]= del [Tuş takımı]= A4 raptiye )
Üretmek:
İlişkili diziye erişme:
Bağlı bir dizinin dizi öğelerine tek tek veya herhangi bir döngü kullanılarak erişilebilir. Bu iki yöntem, öğreticinin bu bölümünde gösterilmektedir. Dizi değerleri ve anahtarlar ayrı ayrı ve kombinasyon halinde yazdırılabilir.
Aşağıdaki komutlar iki dizi değerini yazdıracaktır, Eşek (daha önce bildirildi) Anahtarın değerini belirleyin.
$ Eko$ { eşekDizi1[kuş]}
$ Eko$ { eşekDizi1[çiçek]}
Üretmek:
Yukarıdaki komutları çalıştırdıktan sonra, aşağıdaki çıktı görünecektir.
Bazen bir dizinin tüm anahtarlarını veya tüm değerlerini yazdırmak gerekir. Tüm dizi anahtarları, döngü parametresi genişletmesi veya bash parametresi genişletmesi kullanılarak yazdırılabilir. Aşağıdaki ilk komut, dizinin tüm anahtarlarını for döngüsünü kullanarak her satıra yazdıracak ve ikinci komut, bash parametre genişletmesini kullanarak dizinin tüm anahtarlarını bir satıra yazdıracaktır. Burada , “!” İlişkisel matrisin anahtarlarını okumak için. Kod kullanılır.
$ için anahtar içeri“${! assArray1[@]}“; yapmakEko$ anahtarı; tamamlamak
$ Eko“${! assArray1[@]}“
Üretmek:
Yukarıdaki komutları çalıştırdıktan sonra, aşağıdaki çıktı görünecektir.
Tüm dizi değerleri, döngü parametresi genişletme veya bash parametre genişletme kullanılarak yazdırılabilir. Aşağıdaki ilk komut, bir for döngüsü kullanarak her satırdaki tüm dizi değerlerini yazdıracak ve ikinci komut, bash parametre genişletmesini kullanarak tüm dizi değerlerini bir satıra yazdıracaktır.
$ için kehanet içeri“$ { eşekDizi1[@]}“; yapmakEko$val; tamamlamak
$ Eko“$ { eşekDizi1[@]}“
Üretmek:
Yukarıdaki komutları çalıştırdıktan sonra, aşağıdaki çıktı görünecektir.
İlişkisel matrisin hem anahtarları hem de değerleri, for döngüsü kullanılarak yazdırılabilir. Aşağıdaki komut dosyası, adlandırılmış ilişkisel dizi tuşlarını kullanarak tüm değerleri yazdıracaktır. Eşek. Burada, dizinin her anahtarı, for döngüsünün her adımında ayrıştırılır ve anahtar, karşılık gelen anahtarın değerini okumak için diziye bir işaretçi olarak kullanılır.
$ için anahtar içeri“${! assArray1[@]}“; yapmakEko“$ anahtarı => $ { eşekDizi1[$anahtar]}“; tamamlamak
Üretmek:
Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
İlişkisel diziye yeni veriler ekleyin:
Dizi bildirildikten ve başlatıldıktan sonra ilişkisel diziye yeni bir dizi öğesi kolayca eklenebilir. Aşağıdaki komutlar, dizinin mevcut dizi değerlerini kontrol edecektir.Eşekyeni bir değer ekleyin, “Logitechanahtarı kullanarak,Kiraya vermekVe dizideki öğeleri iki kez kontrol edin.
$ Eko“${assArray2[@]}“
$asArray2+=([Fare]= Logitech)
$ Eko“${assArray2[@]}“
Üretmek:
Komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
İlişkili diziden verileri silin:
Herhangi bir öğe değeri, anahtarın değerine bağlı olarak ilişkili diziden kaldırılabilir. İlişkili diziden belirli bir değeri silmek için ‘unset’ komutu kullanılır. Aşağıdaki komutlar kullanılır, Dizinin mevcut değerini tuşuyla kontrol edin,”gözlemci“,” unset komutuyla değeri silin ve değerin silinip silinmediğini kontrol etmek için ‘echo’ komutunu tekrar çalıştırın. $echo ${ assArray2[Monitör]}
$ kontrol dışı Eşek[monitör]
$ Eko${assArray2[Monitör]}
Üretmek:
Komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
İlişkili bir dizinin eksik dizinini bulun:
Bir dizinin eksik dizini veya anahtarı, koşullu bir ifade kullanılarak bulunabilir. Aşağıdaki metin dizinin anahtarını kontrol edecek”gözlemci” Mevcut veya mevcut değil. Bu anahtar değeri önceki örnekte kaldırılmıştır. Böylece ‘eğer’ koşulu yanlış dönecek ve ‘Bulunamadı’ mesajı yazdırılacaktır.
$ eğer[${assArray2[Monitör]+_}]; Daha sonraEko“Yaratalım ya da yaratalım”; diğerEko“bulunamadı”; fi
Üretmek:
Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
İlişkili matrisi kaldırma:
Herhangi bir ilişkisel dizi, “unset” komutu kullanılarak kaldırılabilir. Aşağıdaki ilk komut, adlandırılmış dizinin tüm değerlerini yazdıracaktır. Eşek bir grup varsa tek satırda. İkinci komut diziyi kaldıracaktır. Üçüncü komut, dizin varlığını kontrol etmek veya kaldırmak için kullanılır. Matris kaldırılırsa çıktı görünmez.
$ Eko“$ { eşekDizi1[@]}“
$ kontrol dışı Eşek
$ Eko“$ { eşekDizi1[@]}“
Üretmek:
Komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
çözüm
Bash’te birden çok anahtar-değer verisi depolamak gerektiğinde, verileri depolamak için bir ilişkisel dizi kullanmak en iyisidir. Bu öğretici, bir kodlayıcının bir ilişkisel diziyi nasıl bildirebileceğini ve başlatabileceğini, bir dizinin anahtarlarını veya değerlerini veya her ikisini nasıl ayrıştırabileceğini, dizi öğelerini ekleyip sileceğini ve çeşitli betikleri kullanarak diziyi nasıl kaldırabileceğini gösterir. Okuyucunun bu öğreticiyi okuduktan sonra bash’ta ilişkisel diziyi düzgün bir şekilde kullanabileceğini umuyoruz.
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın