Articolo originale: Bash Array – How to Declare an Array of Strings in a Bash Script

Gli script bash ti offrono un modo conveniente per automatizzare delle operazioni dalla riga di comando.

Con bash puoi fare molte delle cose che faresti con altri linguaggi di scripting o programmazione. Puoi creare e usare variabili, eseguire loop, usare della logica condizionale e memorizzare dati in array.

Mentre il funzionamento può risultare familiare, la sintassi di bash può essere insidiosa. In questo articolo, imparerai come dichiarare degli array e come usarli nel tuo codice.

Come dichiarare un array in bash

Dichiarare un array in bash è semplice, ma presta attenzione alla sintassi. Se sei abituato ad altri linguaggi di programmazione, il codice potrebbe sembrarti familiare, ma ci sono delle lievi differenze che possono sfuggire facilmente.

Per dichiarare un array, segui i seguenti passaggi:

  1. Dai all'array un nome
  2. Dopo il nome della variabile aggiungi il segno di uguale. Il segno di uguale non deve avere spazi intorno
  3. Racchiudi l'array in parentesi tonde (non parentesi quadre come in JavaScript)
  4. Digita le stringhe usando le virgolette, ma senza usare virgole tra le stringhe

La dichiarazione dell'array avrà questo aspetto:

myArray=("cat" "dog" "mouse" "frog")

Ecco fatto! Semplice.

Come accedere a un array in bash

Esistono un paio di modi diversi per iterare su un array. È possibile iterare sugli elementi stessi o sugli indici.

Come iterare sugli elementi di un array

Il codice per iterare sugli elementi dell'array avrà un aspetto simile:

for str in ${myArray[@]}; do
  echo $str
done

È un po' come usare forEach in JavaScript. Per ogni stringa (str) nell'array (myArray), stampa la stringa.

L'output di questo loop sarà il seguente:

cat
dog
mouse
frog

Nota: il simbolo @ nelle parentesi quadre indica che il loop interessa tutti gli elementi dell'array. Se dovessi tralasciarlo e scrivere for str in ${myArray}, verrebbe stampata solo la prima stringa dell'array.

Come iterare sugli indici di un array

In alternativa, è possibile iterare sugli indici di un array. È simile a un loop for in JavaScript ed è utile nel caso in cui tu voglia accedere all'indice di ogni elemento.

Per usare questo metodo, il codice dovrà avere questo aspetto:

for i in ${!myArray[@]}; do
  echo "element $i is ${myArray[$i]}"
done

L'output sarà come segue:

element 0 is cat
element 1 is dog
element 2 is mouse
element 3 is frog

Nota: il punto esclamativo all'inizio della variabile myArray indica che stai accedendo agli indici dell'array e non agli elementi stessi. Questo può causare confusione se sei abituato a usare il punto esclamativo per indicare la negazione, quindi fai attenzione.

Un'altra nota: bash normalmente non richiede le parentesi graffe per le variabili, ma per gli array sì. Puoi notare che per fare riferimento a un array si usa la sintassi ${myArray}, ma per riferirsi a una stringa o a un numero si usa semplicemente il simbolo del dollaro: $i.

Conclusione

Gli script bash sono utili per automatizzare delle operazioni dalla riga di comando, e gli array sono un ottimo strumento da usare per conservare dati multipli.

Dichiararli e utilizzarli non è difficile, ma è diverso da altri linguaggi, quindi fai molta attenzione per evitare di fare errori.