logo

Bash Dizisi

Bu başlıkta bash dizisinin temellerini ve bunların bash kabuk komut dosyası oluşturmada nasıl kullanıldığını göstereceğiz.

Bir dizi benzer türdeki öğelerin bir koleksiyonu olarak tanımlanabilir. Çoğu programlama dilinin aksine, bash komut dosyasındaki dizilerin benzer öğelerin koleksiyonu olması gerekmez. Bash, dizeyi sayıdan ayırmadığından, bir dizi hem dizeleri hem de sayıları içerebilir.

Bash çok boyutlu diziler için destek sağlamaz; kendi içinde dizi olan öğelere sahip olamayız. Bash, tek boyutlu sayısal olarak indekslenmiş dizilerin yanı sıra ilişkisel diziler için de destek sağlar. Sonuncudan sayısal olarak indekslenmiş diziye erişmek için negatif indeksleri kullanabiliriz. '-1' indisi son öğe için referans olarak kabul edilecektir. Bir dizide birden fazla öğe kullanabiliriz.

Bash Dizi Bildirgesi

Bash'teki diziler aşağıdaki şekillerde bildirilebilir:

Sayısal Olarak İndekslenmiş Diziler Oluşturma

Herhangi bir değişkeni bildirmeden indekslenmiş dizi olarak kullanabiliriz.

Bir değişkeni açıkça Bash Dizisi olarak bildirmek için 'declare' anahtar kelimesini kullanın; sözdizimi şu şekilde tanımlanabilir:

 declare -a ARRAY_NAME 

Neresi,

ARRAY_NAME diziye atayacağımız adı belirtir.

Not:Bash'te bir değişkeni adlandırma kuralları, bir diziyi adlandırma kurallarıyla aynıdır.

Dizinlenmiş bir dizi oluşturmaya yönelik genel bir yöntem aşağıdaki biçimde tanımlanabilir:

 ARRAY_NAME[index_1]=value_1 ARRAY_NAME[index_2]=value_2 ARRAY_NAME[index_n]=value_n 

Pozitif tam sayıları tanımlamak için 'index' anahtar kelimesi kullanılır.

İlişkisel Diziler Oluşturma

Sayısal olarak indekslenmiş dizilerin aksine, ilişkisel diziler ilk önce bildirilir. İlişkisel dizileri bildirmek için 'declare' anahtar sözcüğünü ve -A (büyük harf) seçeneğini kullanabiliriz. Sözdizimi şu şekilde tanımlanabilir:

 declare -A ARRAY_NAME 

İlişkisel dizi oluşturmaya yönelik genel bir yöntem aşağıdaki biçimde tanımlanabilir:

 declare -A ARRAY_NAME ARRAY_NAME[index_foo]=value_foo ARRAY_NAME[index_bar]=value_bar ARRAY_NAME[index_xyz]=value_xyz 

burada index_ herhangi bir dizeyi tanımlamak için kullanılır.

Yukarıdaki formu şu şekilde de yazabiliriz:

arp komutu
 declare -A ARRAY_NAME ARRAY_NAME=( [index_foo]=value_foo [index_bar]=value_bar [index_xyz]=value_xyz ) 

Bash Dizisi Başlatma

Bir Bash Dizisini başlatmak için, parantez içindeki öğelerin listesini aşağıdaki gibi boşluklarla ayırarak belirterek atama operatörünü (=) kullanabiliriz:

 ARRAY_NAME=(element_1st element_2nd element_Nth) 

Not:Burada ilk elemanın indeksi 0 olacaktır. Ayrıca atama operatörünün (=) çevresinde boşluk olmamalıdır.

Bash Dizisinin Erişim Öğeleri

Bash Dizisinin öğelerine erişmek için aşağıdaki sözdizimini kullanabiliriz:

 echo ${ARRAY_NAME[2]} 

Bash Dizisini Yazdır

Bir Bash Dizisinin tüm öğelerini tüm dizinler ve ayrıntılarla birlikte yazdırmak için 'declare' anahtar kelimesini '-p' seçeneğiyle birlikte kullanabiliriz. Bash Dizisini yazdırmak için kullanılan sözdizimi şu şekilde tanımlanabilir:

 declare -p ARRAY_NAME 

Dizi İşlemleri

Bir dizi atandıktan sonra üzerinde bazı yararlı işlemler gerçekleştirebiliriz. Anahtarlarını ve değerlerini görüntüleyebilir ve öğeleri ekleyerek veya çıkararak değiştirebiliriz:

Referans Öğeleri

Tek bir elemana referans vermek için elemanın indeks numarasını bilmemiz gerekir. Aşağıdaki sözdizimini kullanarak herhangi bir öğeye referans verebilir veya yazdırabiliriz:

 ${ARRAY_NAME[index]} 

Not:Kabuğun dosya adı genişletme operatörlerinden kaçınmak için küme parantezleri ${} gereklidir.

Örneğin, indeksi 2 olan bir dizinin elemanını yazdıralım:

Bash Komut Dosyası

 #!/bin/bash #Script to print an element of an array with an index of 2 #declaring the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #printing the element with index of 2 echo ${example_array[2]} 

Çıktı

Java'da bir dizeyi tam sayıya dönüştürme
 Javatpoint 

Belirtilen bir indeksin yerine @ veya * kullanırsak, dizinin tüm üyelerine genişleyecektir. Tüm öğeleri yazdırmak için aşağıdaki formu kullanabiliriz:

Bash Komut Dosyası

 #!/bin/bash #Script to print all the elements of the array #declaring the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing all the elements echo '${example_array[@]}' 

Çıktı

 Welcome to Javatpoint 

@ ve * kullanımı arasındaki tek fark, @ kullanılırken formun çift tırnak içine alınmasıdır. İlk durumda (@ kullanılırken), genişletme dizinin her elemanı için bir kelimeyle sonuç sağlar. 'For döngüsü' yardımıyla daha iyi tanımlanabilir. 'Hoş Geldiniz', 'Kime' ve 'Javatpoint' olmak üzere üç öğeden oluşan bir dizimiz olduğunu varsayalım:

 $ example_array= (Welcome to Javatpoint) 

@ ile döngü uygulama:

 for i in '${example_array[@]}'; do echo '$i'; done 

Aşağıdaki sonucu üretecektir:

 Welcome To Javatpoint 

* ile bir döngü uygulandığında, dizinin tüm elemanlarını tek bir kelime olarak tutan tek bir sonuç üretilecektir:

 Welcome To Javatpoint 

@ ve * karakterlerinin kullanımını anlamak önemlidir çünkü dizi öğelerini yinelemek için formu kullanırken kullanışlıdır.

Bir Dizinin Tuşlarını Yazdırma

Ayrıca indekslenmiş veya ilişkisel dizilerde kullanılan anahtarları ilgili değerleri yerine alıp yazdırabiliriz. ! eklenerek gerçekleştirilebilir. Aşağıdaki gibi dizi adından önceki operatör:

diziler java
 ${!ARRAY_NAME[index]} 

Örnek

 #!/bin/bash #Script to print the keys of the array #Declaring the Array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing the Keys echo '${!example_array[@]}' 

Çıktı

 0 1 2 

Dizi Uzunluğunu Bulma

Aşağıdaki formu kullanarak dizide bulunan öğelerin sayısını sayabiliriz:

 ${#ARRAY_NAME[@]} 

Örnek

 #!/bin/bash #Declaring the Array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Printing Array Length echo 'The array contains ${#example_array[@]} elements' 

Çıktı

 The array contains 3 elements 

Dizide Döngü

Bir dizideki her öğe üzerinde yineleme yapmanın genel yöntemi 'for döngüsünü' kullanmaktır.

Örnek

 #!/bin/bash #Script to print all keys and values using loop through the array declare -a example_array=( 'Welcome''To''Javatpoint' ) #Array Loop for i in '${!example_array[@]}' do echo The key value of element '${example_array[$i]}' is '$i' done 

Çıktı

Bash Dizisi

Bir dizide döngü yapmanın diğer bir yaygın yöntemi de dizinin uzunluğunu almak ve C tarzı döngüyü kullanmaktır:

Bash Komut Dosyası

 #!/bin/bash #Script to loop through an array in C-style declare -a example_array=( &apos;Welcome&apos;&apos;To&apos;&apos;Javatpoint&apos; ) #Length of the Array length=${#example_array[@]} #Array Loop for (( i=0; i <${length}; i++ )) do echo $i ${example_array[$i]} done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-2.webp" alt="Bash Array"> <h3>Adding Elements to an Array</h3> <p>We have an option to add elements to an indexed or associative array by specifying their index or associative key respectively. To add the new element to an array in bash, we can use the following form:</p> <pre> ARRAY_NAME[index_n]=&apos;New Element&apos; </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring an array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos;&apos;HTML&apos; ) #Adding new element example_array[4]=&apos;JavaScript&apos; #Printing all the elements echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java Python PHP HTML JavaScript </pre> <p>Another method for adding a new element to an array is by using the += operator. There is no need to specify the index in this method. We can add one or multiple elements in the array by using the following way:</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos; ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java Python PHP JavaScript CSS SQL </pre> <h3>Updating Array Element</h3> <p>We can update the array element by assigning a new value to the existing array by its index value. Let&apos;s change the array element at index 4 with an element &apos;Javatpoint&apos;.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( &apos;We&apos;&apos;welcome&apos;&apos;you&apos;&apos;on&apos;&apos;SSSIT&apos; ) #Updating the Array Element example_array[4]=Javatpoint #Printig all the elements of the Array echo ${example_array[@]} </pre> <p> <strong>Output</strong> </p> <pre> We welcome you on Javatpoint </pre> <h3>Deleting an Element from an Array</h3> <p>If we want to delete the element from the array, we have to know its index or key in case of an associative array. An element can be removed by using the &apos; <strong>unset</strong> &apos; command:</p> <pre> unset ARRAY_NAME[index] </pre> <p>An example is shown below to provide you a better understanding of this concept:</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to delete the element from the array #Declaring the array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo &apos;${example_array[@]}&apos; </pre> <p> <strong>Output</strong> </p> <pre> Java HTML CSS JavaScript </pre> <p>Here, we have created a simple array consisting of five elements, &apos;Java&apos;, &apos;Python&apos;, &apos;HTML&apos;, &apos;CSS&apos; and &apos;JavaScript&apos;. Then we removed the element &apos;Python&apos; from the array by using &apos;unset&apos; and referencing the index of it. The index of element &apos;Python&apos; was &apos;1&apos;, since bash arrays start from 0. If we check the indexes of the array after removing the element, we can see that the index for the removed element is missing. We can check the indexes by adding the following command into the script:</p> <pre> echo ${!example_array[@]} </pre> <p>The output will look like:</p> <pre> 0 2 3 4 </pre> <p>This concept also works for the associative arrays.</p> <h3>Deleting the Entire Array</h3> <p>Deleting an entire array is a very simple task. It can be performed by passing the array name as an argument to the &apos; <strong>unset</strong> &apos; command without specifying the index or key.</p> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to delete the entire Array #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]} </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-3.webp" alt="Bash Array"> <p>There will be no output if we try to print the content of the above script. An empty result is returned because the array doesn&apos;t exist anymore.</p> <h3>Slice Array Elements</h3> <p>Bash arrays can also be sliced from a given starting index to the ending index.</p> <p>To slice an array from starting index &apos;m&apos; to an ending index &apos;n&apos;, we can use the following syntax:</p> <pre> SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}&apos;) </pre> <p> <strong>Example</strong> </p> <pre> #!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Slicing the Array sliced_array=(&apos;${example_array[@]:1:3}&apos;) #Applying for loop to iterate over each element in Array for i in &apos;${sliced_array[@]}&apos; do echo $i done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/77/bash-array-4.webp" alt="Bash Array"> <hr></${length};>

Örnek

 #!/bin/bash #Declaring an array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos;&apos;HTML&apos; ) #Adding new element example_array[4]=&apos;JavaScript&apos; #Printing all the elements echo &apos;${example_array[@]}&apos; 

Çıktı

 Java Python PHP HTML JavaScript 

Bir diziye yeni bir öğe eklemenin başka bir yöntemi de += operatörünü kullanmaktır. Bu yöntemde indeks belirtmeye gerek yoktur. Aşağıdaki yöntemi kullanarak diziye bir veya daha fazla öğe ekleyebiliriz:

Örnek

 #!/bin/bash #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;PHP&apos; ) #Adding new elements example_array+=( JavaScript CSS SQL ) #Printing all the elements echo &apos;${example_array[@]}&apos; 

Çıktı

 Java Python PHP JavaScript CSS SQL 

Dizi Öğesini Güncelleme

Mevcut diziye indeks değerine göre yeni bir değer atayarak dizi elemanını güncelleyebiliriz. Dizin 4'teki dizi öğesini 'Javatpoint' öğesiyle değiştirelim.

kurt tilkiye karşı

Örnek

 #!/bin/bash #Script to update array element #Declaring the array declare -a example_array=( &apos;We&apos;&apos;welcome&apos;&apos;you&apos;&apos;on&apos;&apos;SSSIT&apos; ) #Updating the Array Element example_array[4]=Javatpoint #Printig all the elements of the Array echo ${example_array[@]} 

Çıktı

 We welcome you on Javatpoint 

Diziden Bir Öğeyi Silmek

Eğer öğeyi diziden silmek istiyorsak, ilişkisel dizi durumunda onun indeksini veya anahtarını bilmemiz gerekir. Bir öğe ' kullanılarak kaldırılabilir ayarsız ' emretmek:

 unset ARRAY_NAME[index] 

Bu kavramı daha iyi anlamanızı sağlamak için aşağıda bir örnek gösterilmektedir:

Örnek

 #!/bin/bash #Script to delete the element from the array #Declaring the array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Removing the element unset example_array[1] #Printing all the elements after deletion echo &apos;${example_array[@]}&apos; 

Çıktı

 Java HTML CSS JavaScript 

Burada 'Java', 'Python', 'HTML', 'CSS' ve 'JavaScript' olmak üzere beş öğeden oluşan basit bir dizi oluşturduk. Daha sonra 'unset'i kullanarak ve indeksine referans vererek 'Python' öğesini diziden kaldırdık. Bash dizileri 0'dan başladığı için 'Python' elementinin indeksi '1'di. Eğer elementi çıkardıktan sonra dizinin indekslerini kontrol edersek, kaldırılan elemanın indeksinin eksik olduğunu görebiliriz. Komut dosyasına aşağıdaki komutu ekleyerek indeksleri kontrol edebiliriz:

 echo ${!example_array[@]} 

Çıktı şöyle görünecek:

 0 2 3 4 

Bu kavram aynı zamanda ilişkisel diziler için de geçerlidir.

Dizinin Tamamını Silme

Bir dizinin tamamını silmek çok basit bir iştir. Dizi adını ' argümanı olarak ileterek gerçekleştirilebilir. ayarsız ' komutunu dizin veya anahtar belirtmeden kullanın.

Örnek

 #!/bin/bash #Script to delete the entire Array #Declaring the Array declare -a example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Deleting Entire Array unset example_array #Printing the Array Elements echo ${!example_array[@]} #Printing the keys echo ${!example_array[@]} 

Çıktı

Bash Dizisi

Yukarıdaki betiğin içeriğini yazdırmaya çalışırsak hiçbir çıktı olmayacaktır. Dizi artık mevcut olmadığından boş bir sonuç döndürülür.

Dilim Dizisi Öğeleri

Bash dizileri aynı zamanda belirli bir başlangıç ​​indeksinden bitiş indeksine kadar dilimlenebilir.

Bir diziyi başlangıç ​​indeksi 'm'den bitiş indeksi 'n'ye kadar dilimlemek için aşağıdaki sözdizimini kullanabiliriz:

 SLICED_ARRAY=(${ARRAY_NAME[@]:m:n}&apos;) 

Örnek

 #!/bin/bash #Script to slice Array Element from index 1 to index 3 #Declaring the Array example_array=( &apos;Java&apos;&apos;Python&apos;&apos;HTML&apos;&apos;CSS&apos;&apos;JavaScript&apos; ) #Slicing the Array sliced_array=(&apos;${example_array[@]:1:3}&apos;) #Applying for loop to iterate over each element in Array for i in &apos;${sliced_array[@]}&apos; do echo $i done 

Çıktı

Bash Dizisi