In questo articolo, spiegheremo come puoi dichiarare e inizializzare gli array associativi in Linux Bash. Elaboreremo ulteriormente il potere degli array associativi con l'aiuto di vari esempi.
Abbiamo eseguito gli esempi menzionati in questo articolo su un sistema Debian 10 Buster. Tuttavia, puoi replicare facilmente su quasi tutte le distro Linux.
Verificare i prerequisiti
Per l'uso di array associativi su Linux Bash, la versione GNU Bash deve essere uguale o superiore alla versione 4. Apri il tuo terminale Linux accedendolo tramite la ricerca del lancio dell'applicazione. Quindi immettere il seguente comando per controllare la versione installata di Bash:
$ Bash -Vversion
La mia attuale versione bash è 5.0.3 Quindi sono a posto. Nel caso in cui la tua versione bash sia inferiore a 4, è possibile aggiornare bash eseguendo il seguente comando come sudo:
$ sudo apt-get install-Solo aggiornamento bash
Dichiarare un array associativo e inizializzarlo
Dichiarare un array associativo è piuttosto semplice in Bash e può essere fatto tramite il comando Dichiara:
$ Dichiara -a "ArrayName"
Nel nostro esempio, dichiarare una variabile di array denominata Samplearray1 come segue:
$ dichiara -a samplearray1
Il prossimo passo è inizializzare i valori richiesti per il tuo array. Nel nostro esempio, vogliamo avere un array in cui i valori sono alcuni nomi di paesi e le chiavi sono le loro abbreviazioni del nome del paese pertinenti. Qui alimeremo i valori dell'array, uno per uno come segue:
$ ArrayName [Key] = Value
Esempio:
$ samplearray1 [chn] = China
$ samplearray1 [jpn] = Giappone
$ samplearray1 [kor] = Corea
$ samplearray1 [twn] = taiwan
$ samplearray1 [th] = Thailandia
Una rapida alternativa è dichiarare e inizializzare un array in un singolo comando bash come segue:
$ dichiara -a arrayName = ([key1] = value1 [key2] = value2 [key3] = value3 .. . )
Ecco come possiamo dichiarare e inizializzare il nostro array menzionato, in alternativa, come segue:
$ dichiara -a samplearray1 = ([chn] = China [jpn] = Giappone [Kor] = Corea [TWN] = Taiwan
[Th] = Thailandia)
Ora presenteremo alcuni esempi che elaboreranno ciò che puoi fare con gli array associativi in Bash:
Esempio1: accedere ai tasti e ai valori dell'array
In questo esempio spiegheremo come puoi:
E,
Stampa
Puoi Stampa un valore contro una chiave Usando la seguente sintassi del comando:
$ echo $ arrayname [keyname]
Ecco come possiamo accedere al nome completo di un paese fornendo l'abbreviazione del nome del paese, dal nostro Samplearray1:
$ echo $ samplearray1 [chn]
$ echo $ samplearray1 [twn]
Se sei interessato a Stampa di tutte le chiavi Del tuo array associativo, puoi farlo usando la seguente sintassi:
$ per la chiave in "$ !ArrayName [@] "; do echo $ key; fatto
Il seguente comando stamperà tutte le abbreviazioni del nome del paese dal mio samplearray1
Usando un ciclo per:
$ per la chiave in "$ !samplearray1 [@] "; do echo $ key; fatto
Un'altra alternativa alla stampa di tutte le chiavi dall'array è usando l'espansione dei parametri. Il comando seguente stamperà tutti i tasti nella stessa riga:
$ echo "$ !samplearray1 [@] "
Se sei interessato a Stampa tutti i valori dell'array contemporaneamente, Puoi farlo usando il loop come segue:
$ per val in "$ Arrayname [@]"; Echo $ val; Fatto
Il seguente comando stamperà tutti i nomi di paesi completi archiviati nel mio samplearray1:
$ per val in "$ samplearray1 [@]"; Echo $ val; Fatto
Un'altra alternativa alla stampa di tutti i valori dall'array è utilizzando l'espansione dei parametri. Il comando seguente stamperà tutti i valori nella stessa riga:
$ echo "$ samplearray1 [@]"
Il prossimo esempio utile lo farà Stampa tutte le coppie di valore chiave immediatamente usando il loop come segue:
$ per la chiave in "$ !samplearray1 [@] "; do echo" $ key è un'abbreviazione per
$ samplearray1 [$ key] ";
Ovviamente puoi rendere questo recupero di informazioni più utile nei tuoi script di Bash complessi e significativi.
Esempio 2: elementi dell'array di conteggio
Il comando seguente può essere utilizzato per contare e stampare il numero di elementi nell'array associativo:
$ echo "$ #ArrayName [@]"
L'output del seguente comando mostra che ho cinque elementi nel mio samplearray1:
$ echo "$ #samplearray1 [@]"
Esempio 3: aggiunta di nuovi dati in array
Se si desidera aggiungere un elemento a un array dopo aver già dichiarato e inizializzato, questa è la sintassi che puoi seguire:
$ ArrayName+= ([key] = value)
Nel mio esempio, voglio aggiungere un altro paese insieme all'abbreviazione del nome della sua contea, quindi userò il seguente comando:
$ samplearray1+= ([al] = Alabama)
Facendo eco ai valori dell'array ora suggerisce che il nuovo paese venga aggiunto al mio array:
$ echo "$ samplearray1 [@]"
Esempio 4: eliminazione dell'elemento dall'array
Inscindendo una voce dall'array associativo, è possibile eliminarla come elemento dell'array. Questo è l'uso della sintassi non set può utilizzare per farlo:
$ Unset ArrayName [Key]
Nel mio esempio, voglio rimuovere la coppia di valore chiave "al-Alabama" dal mio array in modo da sconfiggere il tasto "AL" nel mio comando:
$ unset samplearray1 [al]
Facendo eco ai valori dell'array ora suggerisce che il valore chiave di al-Alabama viene ora rimosso dal mio array:
$ echo "$ samplearray1 [@]"
Esempio 5: verifica se esiste un elemento nell'array
Usando la condizione IF nel modo seguente, è possibile verificare se un articolo è disponibile nell'array associativo o ora:
$ if [$ ArrayName [SearchKey]+_]; Quindi eco "esiste"; else eco "non disponibile"; fi
Ad esempio, se controllo se esiste l'articolo di Al-Alabama recentemente cancellato, il seguente messaggio verrà stampato:
$ if [$ samplearray1 [al]+_]; Quindi eco "esiste"; else eco "non disponibile"; fi
Se controllo un articolo esistente, verrà stampato il seguente risultato:
$ if [$ samplearray1 [jpn]+_]; Quindi eco "esiste"; else eco "non disponibile"; fi
Esempio 6: Eliminazione di un array
È possibile eliminare un array associativo dalla tua memoria bash usando il comando unset come segue:
$ Unset ArrayName
Usando il seguente semplice comando, eliminerò il mio samplearray1 dalla memoria:
$ Unset Samplearray1
Ora, quando provo a stampare tutti i valori dell'array tramite il comando seguente, non ne ottengo nessuno.
$ echo "$ samplearray1 [@]"
Usando questi esempi negli script di Bash Linux, è possibile utilizzare la potenza degli array associativi per ottenere una soluzione a molti problemi complessi.