Quali sono i dizionari di Bash su Linux e come li usi?

Jun 16, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock.com

I dizionari di Bash ti offrono mappe hash e array associativi negli script Shell Linux. Ti mostreremo come utilizzare queste strutture dati potenti e utili nei propri script Shell Linux.

Una rosa con qualsiasi altro nome

Il nome formale per i dizionari è matrici associative. Sono anche chiamati tavoli hash e mappe hash. Sono una struttura dati che funziona in modo simile a un array regolare, ma con una differenza significativa.

Un array è una raccolta di valori dati tenuti in una struttura dati. Per accedere a uno qualsiasi dei valori dei dati, che sono noti come elementi di array, è necessario conoscere la loro posizione nell'array. La posizione di un elemento di array nell'array è noto come indice, quindi questi tipi di array sono noti come array indicizzati. Sono il tipo di array più comunemente usato.

Tuttavia, hanno un inconveniente. Come accedi a un elemento di array se non si conosce la sua posizione all'interno dell'elenco? È necessario eseguire tutti gli elementi nell'array, testando per vedere se il valore in quella posizione è quello che stai cercando.

Gli array associativi superano tale problema. Non usano numeri interi per identificare in modo univoco elementi di array. Usano parole uniche conosciute come parole chiave. È possibile recuperare il valore per un elemento di array utilizzando la sua parola chiave, indipendentemente da dove è posizionato all'interno dell'array. Con un array indicizzato, i numeri interi che rappresentano le posizioni all'interno dell'array sono in ordine crescente. Le parole chiave in un array associativo possono essere in qualsiasi ordine.

Puoi cercare un valore in un array associativo cercando con la sua parola chiave. Guardando una parola e recuperando il suo valore associato mimiche che cerca una parola in un dizionario e trova il suo significato. Ecco perché gli array associativi sono noti come dizionari.

Bash 4.0 o superiore

Gli array associativi sono supportati in il guscio di bash. versione 4.0 o superiore. Se stai utilizzando una distribuzione attuale Linux, dovresti stare bene. Per controllare la versione bash, usa questo comando:

 Bash --versione 

La macchina utilizzata per la ricerca di questo articolo ha installato Bash 5.1.4, quindi siamo bravi a partire.

Principi di base

Per creare un array associativo sulla riga di comando del terminale o in uno script, utilizziamo il comando di dichiarare Bash. Il -UN L'opzione (associativa) dice a Bash che questo sarà un array associativo e non un array indicizzato.

 Dichiara -a acronimi 

Questo crea un array associativo chiamato "acronimi".

Per mettere alcuni dati nel nostro array, dobbiamo fornire parole chiave e valori. Possiamo farlo usando questo formato:

 Nome array [tasto] = valore 

Aggiungiamo alcuni elementi di array:

 Acronimi [ACK] = Riconoscimento 
 Acronyms [BGP] = "Border Gateway Protocol" 
 Acronimi [cidr] = "instradamento inter-dominio senza classi" 
 Acronimi [DHCP] = "Protocollo di configurazione host dinamico" 
 Acronimi [EOF] = "Fine del telaio" 

Quei comandi definiscono cinque elementi di array. Si noti che i valori sono avvolti in virgolette se ci sono spazi nel valore. Le nostre parole chiave sono state inserite in ordine alfabetico, ma possono essere inserite in qualsiasi ordine che ti piace. Le parole chiave devono essere univoche. Se si tenta di creare due voci con la stessa parola chiave, il secondo valore che inserisci sovrascriverà il primo. Avrai ancora solo una voce con quella parola chiave, e sarà associata al secondo valore aggiunto.

Per recuperare i valori dall'array, utilizziamo i comandi in questo formato:

 $ {array-nome [tasto]} 

Possiamo utilizzare ECHO per inviare l'uscita alla finestra del terminale:

 Echo $ {acronimi [ACK]} 
 Echo $ {acronimi [DHCP]} 

Usando loops.

Gli array si prestano ad essere utilizzati nei cicli molto bene. Gli array associativi non fanno eccezione. Loops forniscono modi efficaci per invocare una sequenza di azioni, senza sezioni ripetitive di codice. Prima di esaminare i cicli, c'è un modo efficiente per dichiarare gli array.

Creiamo le matrici che utilizzano il dichiarare comando (lo stesso -UN opzione come prima), ma forniamo parole chiave e valori come un elenco sulla riga di comando.

 Paesi declare -a = ([ALB] = Albania [BHR] = Bahrain [CMR] = Camerun [DNK] = Danimarca [EGY] = Egitto) 

Il nome di matrice è “paesi”, ed è collegata alla lista valori da un segno di uguale” =. . " La lista valori è avvolto tra parentesi “ () ”E ogni parola chiave è avvolto tra parentesi“ [] “. Si noti che non ci sono le virgole che separano i valori. Se si dispone di una stringa valore che contiene spazi, sarà necessario avvolgerlo tra virgolette.

Per fare un array associativo restituire una parola chiave al posto del valore, aggiungere un punto esclamativo “ ! ”Davanti al nome di matrice. Il al simbolo “ @ ”Può essere usato come carattere jolly, cioè tutti gli elementi dell'array.

Questo per ciclo elencherà tutte le parole chiave:

 per la chiave in "$ {paesi [@]}!"; do echo $ chiave; fatto 

Si noti che le parole chiave non sono necessariamente elencati nell'ordine in cui sono stati creati, ma questo non importa. array associativi non si basano su un indice ordinato.

Possiamo anche usare l'espansione di parametro per elencare tutte le parole chiave. Saranno elencati su una riga, non uno per riga.

 echo "$ {! Paesi [@]}" 
 echo "$ {! Acronimi [@]}" 

Siamo in grado di aumentare la nostra per ciclo per stampare le parole chiave e valori allo stesso tempo.

 per la chiave in "$ {acronimi [@]!}"; do echo "$ key - $ {acronimi [$ key]}"; fatto 

Se vogliamo sapere quanti elementi ci sono nelle matrici, possiamo usare un cancelletto “#” davanti al nome di matrice invece che un punto esclamativo.

 echo "$ {! Paesi [@]}" 
 echo "$ {! Acronimi [@]}" 

Controllando che una matrice elemento esiste

Se si cerca una parola chiave, ma non v'è tale elemento dell'array, il valore di ritorno sarà una stringa vuota. A volte è utile disporre di un indicatore diverso per la presenza o l'assenza di un elemento di matrice.

Possiamo verificare la presenza di un elemento di matrice utilizzando la “ + _ ”Operatore. Si noti che questo viene dopo la parola chiave, non davanti al nome di matrice come i precedenti operatori che abbiamo visto.

 if [$ {acronimi [EOF] + _}]; then echo "Trovato"; else echo "Non trovato"; fi 
 if [$ {acronimi [FTP] + _}]; then echo "Trovato"; else echo "Non trovato"; fi 

L'elemento di matrice della parola “EOF” si trova nella matrice, ma l'elemento di matrice della parola “FTP” non è.

Aggiunta di elementi di matrice

L'aggiunta di nuovi elementi ad un array associativo è facile. A differenza di alcuni linguaggi di programmazione, non è necessario per definire la dimensione dell'array quando lo si dichiara. È possibile continuare ad aggiungere nuovi elementi senza colpire un limite superiore predefinito.

Per aggiungere un nuovo elemento alla matrice, si usa il “ + = ”Operatore.

 i paesi + = ([FJI] = Figi) 
 echo "$ (# paesi [@]}" 
 echo $ {paesi [FJI]} 

Il numero di elementi nella matrice è ora a sei, e cercando la nuova parola chiave trova l'elemento di matrice e restituisce il suo valore.

Rimozione elementi di matrice e Arrays

Il non settato comando viene utilizzato per rimuovere elementi dell'array. Se la parola chiave ha spazi, avvolgerlo in virgolette.

 unset acronimi [EOF] 
 if [$ {acronimi [EOF] + _}]; then echo "Trovato"; else echo "Non trovato"; fi 

Per rimuovere l'intera matrice, uso non settato con il nome della matrice.

 Paesi unset 

Utilizzo delle variabili con le matrici

Utilizzando le variabili array associativi è semplice. In questo esempio, verrà impostato un tasto di variabile per la stringa “EOF”. Useremo la variabile quando aggiungiamo un nuovo elemento della matrice alla matrice. In realtà, stiamo sostituendo l'elemento dell'array che abbiamo eliminato in precedenza.

Recupereremo il nuovo elemento Array chiamandolo con la nuova parola chiave e anche utilizzando la variabile. Se la parola chiave contiene spazi, è necessario avvolgere il nome della variabile nelle virgolette.

 Key = EOF 
 Acronimi [$ key] = "Fine del telaio" 
 Echo $ {acronimi [EOF]} 
 Echo $ {acronimi [$ key]} 

Diventa creativo

I nostri esempi sono stati raccolte di informazioni in cui ogni elemento di array è indipendente da tutti gli altri, molto come un dizionario. Ognuno è una definizione unica. Ma gli array associativi possono solo contenere facilmente una varietà di informazioni relative a una cosa, come le specifiche di diversi pezzi di hardware del computer:

 Dichiara -A Specifica 
 Specifiche [CPU] = "Dual Core AMD Ryzen 5 3600" 
 Specifica [Speed] = "3600 MHz" 
 Specifiche [kernel] = "5.11.0-17-generico x86_64" 
 Specifiche [MEM] = "1978,5 MIB" 
 Specifiche [Storage] = "32 GIB" 
 Specifica [shell] = "bash" 
 Echo $ {specifica [CPU]} 

Scrivere in modo efficiente in una lingua significa conoscere i meccanismi e le strutture che offre e selezionando il più appropriato per il problema che stai cercando di risolvere. Gli array associativi ti danno un modo di memorizzare i dati di facile utilizzo che puoi cercare per nome, proprio come un dizionario.


Linux - Articoli più popolari

Come installare il segnale Desktop su Linux

Linux Jan 22, 2025

Eliseu Geisler / Shutterstock.com Segnale è L'app di messaggistica smartphone focalizzata sulla privacy sembra usare . È inoltre possib..


Come utilizzare Brace Espansione in Bash Shell di Linux

Linux May 12, 2025

Fatmawati Achmad Zaenuri / Shutterstock Espansione delle parentesi graffe è una tecnica utile per generare liste di stringhe che possono essere utilizzati neg..


Cosa c'è di nuovo in Debian 11 "Bullseye"

Linux Jul 22, 2025

Debian. , il progenitore di molte altre distribuzioni Linux, ha reso la versione 11 disponibile nella fase di test. Stai pesando le virtù del potenziamento, o sei solo curioso ..


Come aggiornare Ubuntu Linux

Linux Aug 27, 2025

Tomeqs / shutterstock.com. Hai bisogno che l'ultimo e il più grande software di Ubuntu? Non è necessario essere un Linux Pro. Continua a leggere per scopri..


Cosa c'è di nuovo in Elementary OS 6 "Odin"

Linux Aug 14, 2025

Elementary, Inc. Ci sono Molte distribuzioni Linux. (distros) che le persone reclamo sono buone sostituzioni per Windows o MacOS. Ma ce ne sono pochi che han..


Come scaricare DNS in Linux

Linux Nov 14, 2024

La tua esperienza di navigazione su Internet è lenta sul tuo dispositivo Linux o i siti Web che stai visitando obsoleti o il sito Web sbagliato sono del tutto? Discutiamo di scaricare la cache..


Come elencare le variabili di ambiente su Linux

Linux Oct 31, 2025

Su Linux, le variabili di ambiente contengono valori e impostazioni importanti. Script, applicazioni e shell leggono questi valori, spesso per configurare se stessi o per controllare il loro co..


10 utili esempi del comando Linux Rsync

Linux Oct 24, 2025

Il Linux rsync Il comando è un potente strumento di copia dei file e sincronizzazione delle cartelle. Ecco dieci casi di utilizzo comuni che sarai in grado di sfruttare i tuoi siste..


Categorie