GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Scripting – Array indicizzato spiegato con esempi

Array sono un tipo di struttura dati utilizzata per memorizzare valori di un certo tipo. Puoi anche pensare l'array come una variabile, ma una variabile può memorizzare solo un valore in cui un array può memorizzare più valori al suo interno. Il concetto di array non è legato solo a bash. Qualsiasi linguaggio di programmazione con cui lavori conterrà array ma con differenze di implementazione.

Bash supporta due tipi di array:

  • Matrice indicizzata
  • Matrice associativa

Gli array indicizzati sono un tipo di array in cui gli elementi (valori) vengono archiviati e assegnati con un numero intero che inizia da 0 a N . Gli elementi all'interno dell'array vengono referenziati utilizzando il numero di indice. Ne saprai di più nel prossimo articolo. L'obiettivo principale di questo articolo sono solo gli array indicizzati.

Come inizializzare un array indicizzato in Bash

Il primo passo per lavorare con l'array è crearlo. Il termine crea, definisci, inizializza un array sarà usato in modo intercambiabile, ma punta allo stesso significato:creare l'array.

Per creare un array, dovresti usare le parentesi e posizionare gli elementi dell'array (valori) all'interno delle parentesi.

$ arr1=( one 2 three 4 )

Punti importanti da notare:

  • Gli array Bash possono memorizzare elementi di un tipo di dati diverso. In alcuni linguaggi di programmazione, puoi memorizzare valori solo in un array dello stesso tipo.
  • Non ci sono limiti al numero di elementi che possono essere archiviati nell'array. Dipende dalla disponibilità della memoria di sistema.

Puoi anche usare declare comando con il -a flag per creare un array indicizzato.

$ declare -a arr1
$ arr1=( one 2 three 4 )

Oppure,

$ declare -a arr1=( one 2 three 4 )

Come aggiungere o visualizzare elementi di un array

Puoi creare una matrice con valori al suo interno come mostrato nella sezione precedente o semplicemente creare una matrice vuota e aggiungere valori in un secondo momento. Di seguito è riportato come creare un array vuoto.

$ locations=()

Ogni elemento in una matrice ha un valore di indice associato che inizia da 0 a N . Devi aggiungere nuovi elementi a un array usando la posizione dell'indice.

$ locations[0]="Chennai"
$ locations[1]="Mumbai"

Ecco l'illustrazione grafica dell'aggiunta di elementi a un array.

Per visualizzare gli elementi in una matrice, puoi utilizzare una delle seguenti sintassi.

$ echo ${locations[@]}
$ echo ${locations[*]}

Per conoscere la differenza tra @ e * e come funziona con l'array, fai riferimento alla sezione "Loop over array elements" nel nostro Bash For Loop guida.

Se provi a elencare gli elementi dell'array senza usare @ o * verrà stampato solo il primo elemento dell'array.

$ echo ${locations}

Puoi accedere a un particolare elemento direttamente utilizzando la sua posizione di indice.

$ echo ${locations[1]}

Valore indice di un array

Nella sezione precedente, ho mostrato come aggiungere elementi in un array usando la posizione dell'indice. Quando aggiungi matrici utilizzando le posizioni dell'indice, puoi saltare e aggiungere elementi alle diverse posizioni dell'indice.

Le posizioni dell'array hanno due elementi nelle posizioni 0 e 1 . Ora posso saltare l'indice 2 e aggiungere le diverse posizioni dell'indice.

$ locations[5]="Delhi"

Dall'immagine sopra, puoi vedere che ho aggiunto un nuovo elemento all'array nella posizione dell'indice 5.

Se vuoi stampare i valori di indice degli elementi, anteponi all'array il "!" simbolo come di seguito:

$ echo ${!locations[@]}

Questo stamperà solo i valori dell'indice invece di stampare gli elementi.

Per stampare sia l'indice che gli elementi, utilizza il seguente snippet.

for val in ${!locations[@]}
do
   echo "index = ${val} , value = ${locations[$val]}"
done

Aggiungi valori a un array

Puoi aggiungere nuovi elementi a un array senza utilizzare i loro valori di indice e questo aggiungerà elementi all'array.

locations=( Chennai Mumbai Delhi )
locations+=( Bangalore )
locations+=( Hyderabad )
$ echo ${locations[@]}
$ echo ${!locations[@]}

Trova la lunghezza di un array

Puoi ottenere quanti elementi ci sono in un array anteponendo il # simbolo prima dell'array.

$ echo ${#locations[@]}

Usando lo stesso # simbolo, puoi anche scoprire se l'array è vuoto o meno.

if [[ ${#locations[@]} -ne 0 ]]; then
    echo "Array is Not empty"
else
    echo "Array is Empty"
fi

Rimuovi elementi da un array

Per rimuovere un elemento dall'array, puoi usare unset comando. Dai un'occhiata all'esempio seguente in cui si utilizza unset comandare l'elemento da index(2) viene rimosso.

$ echo ${locations[@]}
$ unset locations[2]
$ echo ${locations[@]}

Rimuovi un array

Per rimuovere l'array, puoi usare lo stesso unset comando.

$ unset locations
$ echo ${locations[@]}

Svuota un array

A volte potresti voler rimuovere tutti gli elementi dall'array e mantenere l'array vuoto. In tal caso, puoi semplicemente ricreare l'array.

$ echo ${locations[@]}
Chennai Mumbai Delhi Hyderabad Bangalore
$ locations=()
$ echo ${locations[@]}

Memorizza l'output del comando come array

Puoi eseguire qualsiasi comando e provare a memorizzare l'output in un array. Il comando deve essere racchiuso tra parentesi per memorizzare l'output come un array.

$ path_list=( $(echo $PATH | tr ":" "\n") )
$ echo ${path_list[@]}

Slicing dell'array

Lo Slicing ti dà la flessibilità di estrarre alcuni elementi dell'array in base alla loro posizione di indice.

Di seguito è riportata la sintassi per lo slicing:

${locations[@]:index:length}

Se desideri prendere tutti gli elementi ma da una particolare posizione iniziale dell'indice, puoi farlo nel modo seguente usando solo l'indice.

$ echo ${locations[@]:index} # syntax
$ echo ${locations[@]:2}

Nell'esempio sopra, l'array verrà stampato a partire dalla posizione dell'indice 2 e fino all'ultimo elemento. Se specifichi la lunghezza insieme all'indice, utilizzerà la seguente formula per suddividere l'array.

From index to index+length-1 (inclusive) # Formula
$ echo ${locations[@]:1:3}

Se salti l'indice e fornisci solo la lunghezza, verrà tagliato utilizzando la seguente formula.

From Index 0 to length-1 (inclusive)
$ echo ${locations[@]::4}

Conclusione

In questo articolo, ti ho illustrato l'array indicizzato bash . Gli array sono molto importanti quando inizi a scrivere script bash complessi. Ti danno la possibilità di archiviare, recuperare e manipolare facilmente dati di tipo diverso. A differenza dei linguaggi di programmazione come Python, non ci sono modi integrati per utilizzare facilmente gli array per eseguire alcune attività complesse ma comunque realizzabili.

Nella nostra prossima guida parleremo di Matrice associativa in dettaglio.

  • Scripting Bash:array associativo spiegato con esempi

Lettura correlata:

  • Scripting Bash:spiegazione del ciclo While e Until con esempi
  • Scripting Bash:funzioni spiegate con esempi
  • Scripting Bash:variabili spiegate con esempi
  • Il reindirizzamento di Bash spiegato con esempi
  • Comando Bash Echo spiegato con esempi in Linux
  • Tutorial Bash Heredoc per principianti

Linux
  1. Come creare una matrice di elementi unici da una stringa/array in Bash?

  2. Matrici Bash con esempi

  3. Bash Istruzione If-Else con esempi

  4. Gli array AWK spiegati con 5 esempi pratici

  5. Il tutorial Ultimate Bash Array con 15 esempi

Scripting Bash – Spiegazione del comando Printf con esempi

Bash Scripting – Array associativo spiegato con esempi

Il comando Tr in Linux spiegato con esempi

Bash Scripting Part2 – Cicli For e While con esempi

Bash Scripting Introduzione Tutorial con 5 esempi pratici

Script Bash per Loop spiegato con esempi