Utilizzo di array associativi

Bash:
Utilizzo di array associativi

Come fare:

Prima di tutto, dichiara un array associativo in Bash:

declare -A my_array

Quindi, puoi iniziare a popolarlo con valori, usando stringhe come chiavi:

my_array["name"]="Linux Journal"
my_array["topic"]="Programmazione"

Per accedere a un elemento, usa la sua chiave:

echo ${my_array["name"]}  # Output: Linux Journal

Iterare sopra chiavi e valori è altrettanto semplice:

for key in "${!my_array[@]}"; do
    echo "$key: ${my_array[$key]}"
done

Un output di esempio potrebbe apparire così:

name: Linux Journal
topic: Programmazione

Per aggiungere o modificare elementi, basta assegnare un valore a una chiave, in modo simile alla popolazione iniziale:

my_array["readers"]="Voi"

E per rimuovere un elemento, usa unset:

unset my_array["topic"]

Approfondimento

Gli array associativi sono stati introdotti nella versione 4.0 di Bash, rendendoli un’aggiunta relativamente recente al linguaggio. Prima della loro introduzione, gestire array con indici non interi era laborioso, spesso richiedendo soluzioni alternative o strumenti esterni come awk o sed.

Sotto il cofano, Bash implementa gli array associativi usando tabelle hash. Questa implementazione permette una ricerca chiave efficiente, che rimane piuttosto costante a prescindere dalla dimensione dell’array, una caratteristica critica per la performance nell’esecuzione di script.

Sebbene gli array associativi in Bash portino molta potenza e flessibilità allo scripting di shell, vengono con il loro set di limitazioni, come essere in qualche modo più ingombranti da utilizzare rispetto ad array in linguaggi di livello superiore come Python o JavaScript. Per compiti di manipolazione dati complessi, potrebbe comunque valer la pena considerare strumenti esterni o linguaggi più adatti al compito.

Tuttavia, per molte attività di scripting tipiche, gli array associativi forniscono uno strumento prezioso nel kit del programmatore Bash, permettendo script più leggibili e mantenibili consentendo l’uso di chiavi stringa significative invece di indici numerici.