Bash'te Diziler

Bash Script Yazmaya Giriş

Alex Scriven

Data Scientist

Dizi nedir?

Bash'te iki tür dizi vardır:

  • Bir dizi
    • 'Normal', sayısal indeksli yapı.
    • Python'da 'list', R'de 'vector' olarak adlandırılır.

Python'da: my_list = [1,3,2,4]

R'de: my_vector <- c(1,3,2,4)

Bash Script Yazmaya Giriş

Bash'te dizi oluşturma

Sayısal indeksli bir dizi Bash'te iki şekilde oluşturulabilir.

  1. Öğeler eklemeden declare edin
declare -a my_first_array
  1. Oluştururken öğeleri ekleyin
my_first_array=(1 2 3)

Unutmayın: eşittir işaretinin etrafında boşluk yok!

Bash Script Yazmaya Giriş

Virgüllere dikkat!

Bash'te dizi öğeleri virgülle ayrılmaz:

Bu yanlıştır:

my_first_array=(1, 2, 3)

Bu doğrudur:

my_first_array=(1 2 3)
Bash Script Yazmaya Giriş

Önemli dizi özellikleri

  • Tüm dizi öğeleri array[@] ile döndürülür. Ancak bu özelliklere erişirken Bash, dizi adının etrafında süslü parantez ister.
my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
  • Dizinin uzunluğu #array[@] ile alınır
echo ${#my_array[@]}
4
Bash Script Yazmaya Giriş

Dizi öğelerini değiştirme

Dizi öğelerine köşeli parantezle erişme.

my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
  • Not: Bash, Python gibi sıfır-indeksleme kullanır (R'den farklı!)
Bash Script Yazmaya Giriş

Dizi öğelerini değiştirme

Dizi öğelerini indeks gösterimiyle ayarlayın.

my_first_array=(15 20 300 42 23 2 4 33 54 67 66)

my_first_array[0]=999
echo ${my_first_array[0]}
999
  • Not: $my_first_array[0]=999 gibi bir indeksi üzerine yazarken $ kullanmayın; çalışmaz.
Bash Script Yazmaya Giriş

Dizi öğelerini değiştirme

Diziden bir alt küme almak için array[@]:N:M gösterimini kullanın.

  • Burada N başlangıç indeksi, M döndürülecek öğe sayısıdır.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Bash Script Yazmaya Giriş

Dizilere ekleme

array+=(elemanlar) ile diziye ekleme yapın.

Örneğin:

my_array=(300 42 23 2 4 33 54 67 66)

my_array+=(10) echo ${my_array[@]}
300 42 23 2 4 33 54 67 66 10
Bash Script Yazmaya Giriş

Dizilere (ekleyememek)

Eklemek istediğiniz şeyin etrafına parantez koymazsanız ne olur? Görelim.

Örneğin:

my_array=(300 42 23 2 4 33 54 67 66)
my_array+=10
echo ${my_array[@]}
30010 42 23 2 4 33 54 67 66

10 dizesi yalnızca ilk öğeye eklenir. İstediğimiz bu değil!

Bash Script Yazmaya Giriş

İlişkilendirmeli diziler

  • Bir ilişkilendirmeli dizi
    • Normal diziye benzer, ancak sayısal indeksler yerine anahtar-değer çiftleri vardır
    • Python'daki dictionary'ye veya R'deki list'e benzer
    • Not: Yalnızca Bash 4+ sürümlerinde vardır. Bazı modern Mac'lerde eski Bash bulunur! Terminalde bash --version ile kontrol edin

Python'da:

my_dict = {'city_name': "New York", 'population': 14000000}

R'de:

my_list = list(city_name = c('New York'), population = c(14000000))
Bash Script Yazmaya Giriş

İlişkilendirmeli dizi oluşturma

İlişkilendirmeli bir dizi yalnızca declare sözdizimi (ve büyük -A) ile oluşturulabilir.

Önce declare edip sonra öğe ekleyebilir veya tek satırda yapabilirsiniz.

  • 'Anahtarları' köşeli paranteze alın, eşittirden sonra bir değer atayın.
    • Birden çok öğeyi aynı anda ekleyebilirsiniz.
Bash Script Yazmaya Giriş

İlişkilendirmeli dizi örneği

Bir ilişkilendirmeli dizi oluşturalım:

declare -A city_details # Önce declare edin

city_details=([city_name]="New York" [population]=14000000) # Öğeleri ekleyin
echo ${city_details[city_name]} # Anahtarla indeksleyip değeri döndürün
New York
Bash Script Yazmaya Giriş

İlişkilendirmeli dizi oluşturma

Alternatif olarak, ilişkilendirmeli diziyi tek satırda oluşturup atayın

  • Diğer her şey aynıdır
declare -A city_details=([city_name]="New York" [population]=14000000)

İlişkilendirmeli dizinin 'anahtarlarına' ! ile erişin

echo ${!city_details[@]} # Tüm anahtarları döndür
city_name population
Bash Script Yazmaya Giriş

Passons à la pratique !

Bash Script Yazmaya Giriş

Preparing Video For Download...