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