Bash Array ile Veriler Nasıl Yönetilir ve Kontrol Edilir

Bash Array Ile Veriler Nasil Yonetilir Ve Kontrol Edilir



Dizi değişkeni, herhangi bir programlama dilinde, bir dizin kullanarak birden çok değeri depolamak için kullanılır. Dizi dizini bir sayı veya dize olabilir. Sayısal indeksi içeren diziye “sayısal dizi”, dizi değerini indeks olarak içeren diziye ise “ilişkili dizi” denir. Bash'te hem sayısal hem de ilişkisel diziler oluşturulabilir. Bash dizisinin verilerini işleme ve kontrol etme yöntemleri, bu eğitimde 15 örnek kullanılarak ayrıntılı olarak gösterilmektedir.

İçerik listesi:

  1. Dizini Dizine Göre Tanımlama
  2. Birden Çok Değere Sahip Bir Dizi Tanımlama
  3. İlişkisel Dizi Tanımlayın
  4. Dizi Değerlerini Sayma
  5. Dizi Değerlerini Döngüye Göre Okuyun
  6. Dizinin Özel Değerlerini Okuyun
  7. Dizi Değerlerini Ekleme
  8. Dizideki Dosya İçeriğini Okuma
  9. Dizi Değerlerini Birleştirin
  10. Dizi Değerlerini Değiştirin
  11. Dizi Değerlerini Kaldırma
  12. Dizi Değerlerini Arama ve Değiştirme
  13. Diziyi İşlev Bağımsız Değişkeni Olarak Kullanma
  14. Diziyi İşlevden Geri Döndürme
  15. Diziyi Boş Hale Getirin

Dizini Dizine Göre Tanımlama

Sıralı veya sıralı olmayan sayısal indekslerden bahsederek bir dizi bildirme yöntemi aşağıdaki komut dosyasında gösterilmiştir. Bu tür dizilere sayısal dizi adı verilir. Burada “$books” dizisi üç sıralı indeks tanımlanarak, “$products” dizisi ise dört sıralı olmayan indeks tanımlanarak oluşturulur. Her iki dizinin tüm değerleri “printf” fonksiyonu kullanılarak yazdırılır.







#!/bin/bash

#Dizi indeksini sıralı olarak tanımlayın

kitabın [ 0 ] = 'Bash Shell'i Öğrenmek'

kitabın [ 1 ] = 'Bash ile Siber Güvenlik Operasyonları'

kitabın [ 2 ] = 'Bash Komut Satırı Profesyonel İpuçları'

Eko 'İlk dizinin tüm değerleri:'

baskı '%s\n' ' ${kitaplar[@]} '

#Dizi indeksini sıralı olmayan bir sırayla tanımlayın

ürünler [ 10 ] = 'Dolma kalem'

ürünler [ 5 ] = 'Kalem'

ürünler [ 9 ] = 'Kurallı'

ürünler [ 4 ] = 'A4 Boyutunda Kağıt'

Eko

Eko 'İkinci dizinin tüm değerleri:'

baskı '%s\n' ' ${ürünler[@]} '

Çıktı :



Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Her iki dizinin değerleri çıktıda yazdırılır. Dizin sırası, sıralı olmayan dizinler dizisi için yazdırma sırasında korunur:



  p1





Başa gitmek

Birden Çok Değere Sahip Bir Dizi Tanımlama

Birden fazla değere sahip bir sayısal dizi, “declare” komutu kullanılarak -a seçeneğiyle veya “declare” komutu kullanılmadan bildirilebilir. Aşağıdaki scriptte ilk dizi “declare” komutu kullanılarak deklare edilir, ikinci dizi ise “declare” komutu kullanılmadan oluşturulur.



#!/bin/bash

#'declare' anahtar kelimesiyle sayısal bir dizi bildirin

ilan etmek -A isimler = ( 'Michael' 'Davut' 'İskender' 'Thomas' 'Robert' 'Richard' )

#Dizi değerlerini yazdır

Eko 'İlk dizinin tüm değerleri:'

baskı '%s\n' ' ${isimler[@]} '

#'declare' anahtar kelimesi olmadan sayısal bir dizi bildirin

kitabın = ( 'Kabuk Komut Dosyası Oluşturma Eğitimleri' 'Bish Bash Bosh!' 'Bash'i Hızla Öğrenin' )

#Yeni satır ekle

Eko

#Dizi değerlerini yazdır

Eko 'İkinci dizinin tüm değerleri:'

baskı '%s\n' ' ${kitaplar[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Her iki dizinin değerleri burada yazdırılır:

  p2

Başa gitmek

İlişkisel Dizi Tanımlayın

Dizin olarak dize değerini içeren diziye ilişkisel dizi adı verilir. -A seçeneği, ilişkisel bir Bash dizisi oluşturmak için Bash'teki “declare” komutuyla birlikte kullanılır. Aşağıdaki scriptte, ilk ilişkisel dizi indekslerden ayrı ayrı bahsederek, ikinci dizi ise dizi bildirimi sırasında tüm anahtar-değer çiftlerinden bahsederek bildirilir.

#!/bin/bash

#Değeri olmayan bir ilişkisel dizi değişkeni bildirin

ilan etmek -A çalışan

#İndeksini tanımlayarak değeri ayrı ayrı atayın

çalışan [ 'İD' ] = '78564'

çalışan [ 'isim' ] = 'Aktörler Mevcut'

çalışan [ 'postalamak' ] = 'CEO'

çalışan [ 'maaş' ] = 300000

#Dizinin iki değerini yazdır

Eko 'Çalışan kimliği: ${çalışan[id]} '

Eko 'Çalışan Adı: ${çalışan[isim]} '

#Değerleri olan bir ilişkisel dizi bildirin

ilan etmek -A kurs = ( [ kod ] = 'CSE-206' [ isim ] = 'Nesne yönelimli programlama' [ kredi_saat ] = 2.0 )

#Yeni satır ekle

Eko

#İkinci dizinin iki dizi değerini yazdır

Eko 'Ders Adı: ${kurs[isim]} '

Eko 'Kredi Saati: ${course[credit_hour]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. İlişkisel dizinin belirli değerleri burada anahtar veya indeks değeri belirtilerek yazdırılır:

  p3

Başa gitmek

Dizi Değerlerini Sayma

Sayısal dizinin ve ilişkisel dizinin toplam öğelerini sayma yöntemi aşağıdaki komut dosyasında gösterilmektedir:

#!/bin/bash

#Sayısal bir dizi bildirin

ilan etmek -A isimler = ( 'Michael' 'Davut' 'İskender' 'Thomas' 'Robert' 'Richard' ) ;

Eko 'Sayısal dizinin uzunluğu ${#names[@]} '

#İlişkisel bir dizi bildirin

ilan etmek -A kurs = ( [ kod ] = 'CSE-206' [ isim ] = 'Nesne yönelimli programlama' [ kredi_saat ] = 2.0 )

Eko 'İlişkisel dizinin uzunluğu ${#kurs[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Sayısal ve ilişkisel dizilerin dizi uzunluğu burada yazdırılır:

  p4

Başa gitmek

Dizi Değerlerini Döngüye Göre Okuyun

Sayısal bir dizinin ve ilişkisel bir dizinin tüm değerlerini 'for' döngüsünü kullanarak okuma yöntemi aşağıdaki komut dosyasında gösterilmektedir:

#!/bin/bash

#Sayısal bir dizi bildirin

ilan etmek -A kitabın = ( 'Kabuk Komut Dosyası Oluşturma Eğitimleri' 'Biş Bash Bosh!' 'Bash'i Hızla Öğrenin' )

#Sayısal dizi değerlerini yazdır

Eko 'Sayısal dizi değerleri:'

için içinde içinde ' ${kitaplar[@]} '

Yapmak

Eko ' $in '

Tamamlandı

Eko

#Değerleri olan bir ilişkisel dizi bildirin

ilan etmek -A müşteriler = (

[ İD ] = 'H-5623'

[ isim ] = 'Bay. Ahnaf'

[ adres ] = '6/A, Dhanmondi, Dakka.'

[ telefon ] = '+8801975642312' )

#İlişkisel dizi değerlerini yazdır

Eko 'İlişkili dizi değerleri:'

için k içinde ' ${!clients[@]} '

Yapmak

Eko ' bin dolar => ${müşteriler[$k]} '

Tamamlandı

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Burada sayısal dizinin değerleri ve ilişkisel dizinin anahtar-değer çiftleri çıktıda yazdırılır:

  p5

Başa gitmek

Dizinin Özel Değer Aralığını Okuyun

Belirli bir indeks aralığının dizi değerleri aşağıdaki komut dosyasında gösterilmektedir. Komut dosyasında dört öğeden oluşan sayısal bir dizi tanımlanır. Dizinin ikinci indeksinden iki dizi değeri daha sonra yazdırılır.

#!/bin/bash

#Sayısal bir dizi bildirin

ilan etmek -A Kekler = ( 'Çikolatalı kek' 'Vanilyalı Kek' 'Kırmızı kadife kek' 'Çilekli Pasta' )

#Belirli dizi değerlerini yazdır

Eko 'Dizi değerlerinin 2. ve 3. elemanları şunlardır:'

baskı '%s\n' ' ${kekler[@]:1:2} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Dizinin ikinci ve üçüncü değerleri çıktıda yazdırılan “Vanilyalı Kek” ve “Kırmızı Kadife Kek”tir:

  p6

Başa gitmek

Dizi Değerlerini Ekleme

Dizinin sonuna birden çok değer ekleme yöntemi aşağıdaki komut dosyasında gösterilmiştir. Ana dizi olan “$books” üç öğeden oluşur ve “$books” dizisinin sonuna iki öğe eklenir.

#!/bin/bash

#Sayısal bir dizi bildirin

ilan etmek -A kitabın = ( 'Kabuk Komut Dosyası Oluşturma Eğitimleri' 'Bish Bash Bosh!' 'Bash'i Hızla Öğrenin' )

#Eklemeden önce dizi değerlerini yazdır

Eko 'Dizi değerleri:'

baskı '%s\n' ' ${kitaplar[@]} '

Eko

kitabın = ( ' ${kitaplar[@]} ' 'Linux Komut Satırı ve Kabuk Komut Dosyası İncili' 'Mendel Cooper'dan Gelişmiş Bash Komut Dosyası Oluşturma Kılavuzu' )

#Eklendikten sonra dizi değerlerini yazdır

Eko 'İki değer eklendikten sonra dizi değerleri:'

baskı '%s\n' ' ${kitaplar[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Yeni değerlerin eklenmesinden önceki ve sonraki dizi değerleri çıktıda yazdırılır:

  p7

Başa gitmek

Dizideki Dosya İçeriğini Okuyun

Bu örneğin betiğini test etmek için aşağıdaki içeriğe sahip 'fruits.txt' adında bir metin dosyası oluşturun:

meyveler.txt

Mango

Nefesi

Ananas

Turuncu

Muz

Aşağıdaki scriptte bir dosyanın içeriği “$data” isimli bir dizide saklanmaktadır. Burada dosyanın her satırı dizinin her elemanı olarak saklanır. Daha sonra dizi değerleri yazdırılır.

#!/bin/bash

#Kullanıcıdan dosya adını oku

Okumak -P 'Dosya adını girin:' dosya adı

eğer [ -F $dosyaadı ]

Daha sonra

#Dosya içeriğini bir diziye oku'

veri = ( ' kedi ' $dosyaadı ' ' )

Eko 'Dosyanın içeriği aşağıda verilmiştir:'

#Dosyayı satır satır oku

için astar içinde ' ${veri[@]} '

Yapmak

Eko $satır

Tamamlandı

olmak

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. “cat” komutu tarafından gösterilen çıktı ile betiğin çıktısı benzerdir çünkü aynı dosyaya “cat” komutu ve betik tarafından erişilir:

  p8

Başa gitmek

Dizi Değerlerini Birleştirin

Birden fazla dizinin değerleri birleştirilerek yeni bir dizi oluşturulur. Aşağıdaki komut dosyasında iki sayısal dize dizisi tanımlanmıştır. Daha sonra bu dizilerin değerleri birleştirilerek yeni bir dizi oluşturulur.

#!/bin/bash

#İlk diziyi bildir

ilan etmek -A isimListesi1 = ( 'Michael' 'Davut' 'İskender' 'Thomas' )

Eko 'İlk dizi değerleri şunlardır:'

baskı '%S, ' ${nameList1[@]}

Eko

#İkinci diziyi bildir

ilan etmek -A isimListesi2 = ( 'Robert' 'Richard' )

Eko 'İkinci dizi değerleri:'

baskı '%S, ' ${nameList2[@]}

Eko

#İki diziyi birleştirerek yeni bir dizi oluştur

birleştirilmiş_dizi = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

Eko 'Birleşik dizi değerleri şunlardır:'

baskı '%S, ' ${combined_array[@]}

Eko

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Burada çıktıda üç dizinin değerleri yazdırılır. Üçüncü dizi, birinci ve ikinci dizinin tüm değerlerini içerir:

  p9

Başa gitmek

Dizi Değerlerini Değiştirin

Bir veya daha fazla dizi değerini indeksten bahsederek güncelleme yöntemi aşağıdaki komut dosyasında gösterilmektedir:

#!/bin/bash

#İlk diziyi bildir

ilan etmek -A isim listesi = ( 'Michael' 'Davut' 'İskender' 'Thomas' )

Eko 'Dizi değerleri:'

baskı '%S, ' ${nameList[@]}

Eko

#Dizinin 2. değerini güncelle

isim listesi [ 1 ] = 'Robert'

Eko 'Güncellemeden sonraki dizi değerleri:'

baskı '%S, ' ${nameList[@]}

Eko

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Ana dizinin ve güncellenen dizilerin değerleri çıktıda yazdırılır:

  s.10

Dizi Değerlerini Kaldırma

Dizinin belirli bir elemanını veya tüm elemanlarını kaldırmak için “unset” komutu kullanılır. Aşağıdaki komut dosyasında dizinin ikinci elemanı kaldırılmıştır.

#!/bin/bash

#Sayısal bir dizi bildirin

ilan etmek -A kitabın = ( 'Kabuk Komut Dosyası Oluşturma Eğitimleri' 'Bish Bash Bosh!' 'Bash'i Hızla Öğrenin' )

#Kaldırmadan önce dizi değerlerini yazdır

Eko 'Dizi değerleri:'

baskı '%s\n' ' ${kitaplar[@]} '

Eko

#2. öğeyi kaldır

ayarsız kitabın [ 1 ]

#Kaldırdıktan sonra dizi değerlerini yazdır

Eko '2. değer kaldırıldıktan sonra dizi değerleri:'

baskı '%s\n' ' ${kitaplar[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Ana dizinin değerleri ve bir değer kaldırıldıktan sonra dizi değerleri çıktıda yazdırılır:

  s.11

Başa gitmek

Dizi Değerlerini Arama ve Değiştirme

Aşağıdaki komut dosyasında, kalıpta tanımlanan arama değeri '$isimler' dizisinin herhangi bir değeriyle eşleşirse, dizinin belirli değeri başka bir değerle değiştirilir.

#!/bin/bash

#İlk diziyi bildir

ilan etmek -A isimler = ( 'Michael' 'Davut' 'İskender' 'Thomas' )

#Orijinal dizi değerlerini yazdır

Eko 'Orijinal dizi değerleri:'

baskı '%s\n' ' ${isimler[@]} '

#Dizi değerlerini değiştirdikten sonra dize oluştur

güncellendi_dizi = ${isimler[@]/Alexander/Richard}

#Değiştirdikten sonra dizi değerlerini yazdır

Eko 'Değiştirildikten sonraki dizi değerleri:'

baskı '%s\n' ' ${updated_array[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Ana dizinin değerleri ve bir değer değiştirildikten sonraki dizi değerleri çıktıda yazdırılır:

  s.12

Başa gitmek

Diziyi İşlev Bağımsız Değişkeni Olarak Kullanma

Aşağıdaki komut dosyasında, işlev argümanı olarak bir dizi değişkeni iletilir ve bu dizinin değerleri daha sonra yazdırılır.

#!/bin/bash

#Bir sayı dizisi bildirin

ilan etmek -A sayılar = ( 10 6 Dört beş 13 8 )

#Bir bağımsız değişken değeri alacak bir işlev tanımlayın

işlev ( )

{

#İlk argümanı oku

sayılar = 1$

#Dizi değerlerini yazdır

Eko 'Dizi değerleri:'

baskı '%d\n' ' ${sayılar[@]} '

}

#Diziyi argüman olarak kullanarak işlevi çağırın

işlev ' ${sayılar[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür:

  s.13

Başa gitmek

İşlevden Bir Dizi Döndürme

Aşağıdaki komut dosyasında işlev dört sayısal bağımsız değişkenle çağrılır. Argüman değerleriyle bir dizi oluşturulur ve bu dizi, işlevden çağırana döndürülür.

#!/bin/bash

#Dört bağımsız değişken değerini okuyan bir işlev tanımlayın

işlev ( )

{

#Argüman değerlerini oku

sayılar = ( 1$ 2$ 3 dolar 4$ )

#Diziyi döndür

Eko ' ${sayılar[@]} '

}

#İşlevi üç argümanla çağırın

return_val =$ ( işlev 78 Dört beş 90 23 )

#Döndürülen değeri bir dizide saklayın

Okumak -A birde <<< $return_val

#Döndürülen dizinin değerlerini yazdır

Eko 'Dizinin değerleri şunlardır:'

için içinde içinde ' ${sayı[@]} '

Yapmak

Eko ' $in '

Tamamlandı

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür:

Başa gitmek

Diziyi Boş Hale Getirin

Aşağıdaki komut dosyası, 'unset' komutunu kullanarak bir diziyi boşaltma yöntemini gösterir. Dizi değerlerinin toplam sayısı, diziyi boşaltmadan önce ve sonra yazdırılır.

#!/bin/bash

#Sayılardan oluşan bir dizi bildirin

ilan etmek -A sayılar = ( 10 6 Dört beş 13 80 )

Eko 'Dizi değerlerinin sayısı: ${#sayılar[@]} '

#Diziyi boş yap

ayarsız sayılar

Eko 'Diziyi boşalttıktan sonraki dizi değerlerinin sayısı: ${#sayılar[@]} '

Çıktı :

Betiği çalıştırdıktan sonra aşağıdaki çıktı görünür. Dizi boş hale getirildikten sonra dizinin eleman sayısı 0 oldu:

  s.15

Başa gitmek

Çözüm

Bash betiğinde dizi değişkenlerini bildirmenin, bunlara erişmenin, değiştirmenin ve kaldırmanın farklı yöntemleri bu eğitimde 15 basit örnek kullanılarak gösterilmektedir. Bu eğitimin Bash kullanıcılarının Bash dizisinin kullanımlarını ayrıntılı olarak öğrenmelerine yardımcı olacağını umuyoruz.