Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Array

Utilizzare gli array sulla shell Linux di Bash, insieme a tutte le relative operazioni più comuni.
Utilizzare gli array sulla shell Linux di Bash, insieme a tutte le relative operazioni più comuni.
Link copiato negli appunti

Dalla versione 2 di Bash sono stati introdotti gli array, collezioni ordinate di oggetti che possono essere richiamati univocamente in maniera sistematica, tramite indici numerici (che partono da 0). L'elemento in posizione x di un array memorizzato nella variabile arr può essere inizializzato utilizzando la notazione arr[x]. Quando invece si vuole accedere al valore memorizzato nel medesimo elemento è sempre necessario utilizzare la notazione estesa, ${arr[x]}, così da distinguere le parentesi quadre usate per l'accesso ad elementi di array, da altri loro utilizzi permessi da Bash.

#!/bin/bash
messaggio[0]="Ciao"
messaggio[1]="Mondo"
echo -n "messaggio[0] = "
echo ${messaggio[0]}
echo -n "messaggio[1] = "
echo ${messaggio[1]}
messaggio[1]="Mondo!"
messaggio[2]="${messaggio[0]} ${messaggio[1]}"
echo ${messaggio[2]}

Un metodo di inizializzazione alternativo di un array è dichiarare inizialmente tutti gli elementi in esso contenuti, usando una diversa notazione:

#!/bin/bash
messaggio=("Ciao" "Mondo!")
echo "${messaggio[0]} ${messaggio[1]}"

Infine, un'altra modalità di assegnamento simile alla precedente consente di specificare anche diverse posizioni per i singoli elementi:

#!/bin/bash
messaggio=([2]="Ciao" [3]="Mondo!")
echo "${messaggio[2]} ${messaggio[3]}"

Operazioni su array

A questo punto è bene passare in rassegna le operazioni più comuni da poter effettuare su un array. Per fare riferimento al suo intero contenuto si utilizza @ o * come indice; così facendo, negli ultimi due esempi presentati, è possibile sostituire l'ultima riga con la notazione più semplice echo "${messaggio[@]}". Il simbolo # viene anteposto a quest'ultima notazione per conoscere la lunghezza dell'array (cioè il numero di elementi dichiarati effettivamente contenuti in esso), in questo modo:

#!/bin/bash
array=(2 3 4 5)
echo "array contiene ${#array[@]} elementi."

È anche possibile accedere ad una porzione di un array specificandone la posizione di partenza e la lunghezza, come mostrato nell'esempio seguente (è da tener presente che le posizioni partono da 0):

#!/bin/bash
array=(2 3 4 5)
echo "Il secondo e terzo elemento di array sono ${array[@]:1:2}"

Per concludere, si utilizza il comando unset per rimuovere un elemento di un array (indicandone perciò la posizione racchiusa in parentesi quadre) o per eliminare l'intero array. È utile far presente che nel primo caso gli elementi ancora presenti nell'array manterranno le medesime posizioni anche dopo che l'elemento è stato rimosso, come è facile verificare con il prossimo esempio.

#!/bin/bash
array=(2 3 4 5)
unset array[1]
echo "Ecco il secondo e terzo elemento di array ${array[1]} ${array[2]}"

Gli operatori validi sull'intero contenuto di un array funzionano anche su di un singolo elemento, sostituendo il simbolo @ (o *) con la sua posizione.

#!/bin/bash
messaggio=("CiaoCiao" "Mondo!Mondo!")
echo "${messaggio[0]:4:4} ${messaggio[1]:6:6}"

Ti consigliamo anche