GNU/Linux >> Linux Esercitazione >  >> Linux

Matrice associativa in Bash

Qualsiasi programmatore sa quanto siano vitali le variabili. Le variabili fungono da stazioni intermedie per i programmatori/codificatori in cui trasmettono informazioni avanti e indietro. Le variabili sono generalmente cruciali nell'informatica poiché consentono al codice di essere dinamico. In altri termini, le variabili sono denominate segnaposto di informazioni che cambiano ripetutamente a seconda del loro utilizzo. Tuttavia, un problema significativo che ha colpito la maggior parte dei programmatori e programmatori è tenere traccia di molte variabili in un progetto.

Questo tende a essere un fastidio per la maggior parte dei programmatori sul campo. C'è una soluzione definitiva a questo problema che sono gli array. Un array nella programmazione è noto come struttura dati che memorizza elementi con lo stesso tipo di dati. Gli array sono ideali per l'archiviazione di una raccolta di dati. Gli array sono di grande importanza per quasi tutti i linguaggi di programmazione, senza dimenticare i linguaggi di scripting come Bash. Questo articolo si concentrerà maggiormente sull'array associativo in Bash.

È noto che i linguaggi di scripting della shell offrono agli utenti la possibilità di creare, interrogare, aggiornare e manipolare array indicizzati. Non lasciarti confondere dal termine array indicizzati poiché è un elenco di elementi a cui è preceduto un numero. L'elenco più il numero assegnato è racchiuso in una variabile, semplificando la presentazione del codice.

Matrice associativa in Bash

Il linguaggio di scripting Bash ha un ulteriore vantaggio poiché può creare array associativi e tratta gli array come un normale array. La funzione primaria di un array associativo consente all'utente di sviluppare elenchi contenenti chiavi/indici e valori anziché solo valori numerati. La funzionalità degli array associativi è stata inclusa in bash 4, il che significa che prima di iniziare esamineremo la versione corrente di Bash usando la riga di comando seguente:

bash --version

Uscita

Se la tua versione bash non è la versione 4 e successive, dovrai aggiornarla per funzionare. Non preoccuparti poiché i passaggi coinvolti sono semplici. Bash può essere aggiornato su un server Ubuntu usando il famoso comando apt-get. Alcuni utenti potrebbero richiedere di aggiornare il loro Bash e, per farlo, apri il tuo terminale ed esegui i seguenti comandi:

sudo apt-get install --only-upgrade Bash

Il comando aggiornerà la shell bash alla versione più recente sul tuo sistema operativo Ubuntu. Per accertarti che l'aggiornamento abbia esito positivo, esegui il comando sopra per verificare la versione installata/aggiornata della shell bash (Bash –version). Questo comando stamperà una console con l'attuale versione della shell bash sul tuo server Ubuntu.
Se, in alcuni casi, non hai Bash installato sul tuo server Ubuntu, non spaventarti. Esegui i comandi seguenti per installare Bash:

sudo apt update
sudo apt install bash

Dichiarazione e inizializzazione di un array associativo

In Bash, un array associativo può essere dichiarato usando la parola chiave "declare". Gli elementi array, d'altra parte, possono essere inizializzati durante una dichiarazione di array o dopo la dichiarazione di una variabile. Lo script seguente creerà un array chiamato assArray1 e gli altri quattro valori dell'array verranno inizializzati individualmente come indicato

declare -A assArray1
assArray1[fruit]=Mango
assArray1[bird]=Cockatail
assArray1[flower]=Rose
assArray1[animal]=Tiger

Uscita

Durante la dichiarazione dell'array, lo script seguente denominato assArray2 inizializzerà un array associativo. Al momento della dichiarazione vengono definiti tre valori di array con chiavi.

declare -A assArray2=( [HDD]=Samsung [Monitor]=Dell [Keyboard]=A4Tech )

Uscita

Come accedere all'array associativo

Ci sono due moduli che un utente può accedere a un array associativo. In primo luogo, è possibile accedervi individualmente e, in secondo luogo, è possibile accedervi utilizzando un loop. Non preoccuparti dei modi sopra menzionati poiché saranno trattati nel tutorial. Si noti che le chiavi ei valori di un array possono essere stampati insieme o separatamente. Specificando il valore della chiave, la riga di comando seguente stamperà due valori di matrice. Useremo assArray1 per illustrare.

echo ${assArray1[bird]}
echo ${assArray1[flower]}

Uscita

Vedrai una schermata simile a quella qui sotto dopo aver eseguito le righe di comando evidenziate sopra.

Durante la stampa, a volte ti verrà richiesto di stampare tutte le chiavi e i valori di un array. Questo può essere fatto usando un'espansione perimetrale bash o un anello. Per prima cosa, diamo un'occhiata alla stampa utilizzando un ciclo. Se sei già stato a un corso di programmazione, devi esserti imbattuto in questo termine in modo diverso. Esegui il comando seguente per stampare tutte le chiavi e i valori di un array.

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

Uscita

Il comando seguente utilizzerà l'espansione del parametro bash per stampare tutte le chiavi ei valori di un array

echo "${!assArray1[@]}"

Uscita

Nota:il simbolo '!' in entrambi i comandi viene utilizzato per leggere le chiavi dell'array associativo.

Pertanto, abbiamo visto che tutti i valori dell'array possono essere stampati utilizzando un'espansione del parametro bash o un ciclo. Di seguito è riportato un altro esempio per approfondire l'uso dei due metodi. Il primo comando stamperà i valori dell'array utilizzando un ciclo, mentre il secondo comando stamperà i valori dell'array utilizzando un'espansione del parametro bash.

for val in "${assArray1[@]}"; do echo $val; done

Uscita

echo "${assArray1[@]}"

Uscita

Nota:il metodo loop può essere utilizzato per stampare sia le chiavi che i valori di un array associativo. A scopo illustrativo, utilizzeremo il nostro primo array, assArray1. In questo metodo, ogni chiave dell'array deve essere analizzata in ogni fase del ciclo. La chiave utilizzata viene quindi utilizzata come indice dell'array che aiuta a leggere i valori delle chiavi corrispondenti.
Esegui la riga di comando seguente

for key in "${!assArray1[@]}"; do echo "$key => ${assArray1[$key]}"; done

Uscita

Come aggiungere dati a un array associativo

Dopo la dichiarazione e l'inizializzazione dell'array, è possibile aggiungere nuovi elementi dell'array a un array associativo. Usando il nostro secondo array, assArray2, un nuovo valore, "HP" e la chiave "Mouse" verranno aggiunti all'array, dopodiché gli elementi correnti dell'array verranno ricontrollati. Per completare i passaggi sopra menzionati, esegui i seguenti comandi

echo "${assArray2[@]}"
assArray2+=([Mouse]=Logitech)
echo "${assArray2[@]}"

Uscita

Avrai un output simile a quello sotto dopo aver eseguito i comandi sopra.

Come eliminare i dati da un array associativo

In base al valore della chiave, è possibile rimuovere un valore di elemento in un array associativo. Quando si eliminano i dati, il comando "unset" è utile. Il comando cancella dati particolari in un array associativo. Ad esempio, dal nostro assArray2, cancelliamo il valore che contiene la chiave "Monitor". Il comando verificherà se il valore ha la chiave "Monitor". Quindi, con l'aiuto del comando unset, il valore verrà cancellato. Il comando 'eco' serve per controllare e accertare se il valore è stato cancellato o meno.

unset assArray2[Monitor]
echo ${assArray2[Monitor]}

Uscita

Se il comando viene eseguito correttamente, avrai un output simile a quello evidenziato di seguito

Come trovare un indice mancante in un array associativo

Un'istruzione condizionale, in questo caso, è fondamentale poiché aiuta a sapere se c'è un indice mancante in un array. Ad esempio, possiamo verificare la chiave dell'array "Monitor" che abbiamo eliminato di recente. Per fare ciò, eseguiremo un comando di istruzione if per verificare se la chiave esiste o meno. Ricorda, abbiamo eliminato la chiave dal nostro esempio precedente. Quindi, il valore falso dovrebbe essere stampato.

if [ ${assArray2[Monitor]+_} ]; then echo "Found"; else echo "Not found"; fi

Uscita

Come rimuovere un array associativo

Il comando "unset" utilizzato per eliminare i dati da un array associativo viene utilizzato anche per rimuovere un array associativo. In questo esempio, useremo il nostro primo array, che è assArray1. Il primo comando stamperà i valori dell'array. Il secondo comando contenente il comando 'unset' rimuoverà l'array. Il comando finale verificherà se l'array esiste o meno. Se l'array è stato rimosso correttamente, non ci sarà nulla sulla console di output.

echo "${assArray1[@]}"
unset assArray1
echo "${assArray1[@]}"

Uscita

Matrici di dati

Per la memorizzazione dei dati correlati, gli array sono significativi. Potrebbe essere richiesto di utilizzare le variabili per memorizzare i dati, ma non è il modo più appropriato per archiviare e tenere traccia di tracce di dati di grandi dimensioni. Pertanto, per mantenere i tuoi dati più indicizzati e consolidati, dovrai quindi utilizzare gli array. Inoltre, l'uso di array per archiviare e tenere traccia di dati di grandi dimensioni è più efficiente dell'uso di variabili. Gli array non hanno bisogno di una voce per esistere come nelle variabili. Non dovresti preoccuparti della quantità esatta di dati da archiviare prima di lavorarci. Ciò rende gli array vantaggiosi quando si tratta di dati estesi e imprevedibili. In breve, gli array sono molto più potenti delle variabili e sono comunemente usati nella maggior parte dei linguaggi di programmazione e di scripting come Bash.

Conclusione

L'utilizzo di un array associativo per l'archiviazione dei dati è fondamentale quando si archiviano dati di grandi dimensioni contenenti coppie chiave-valore in Bash. L'articolo ha spiegato come dichiarare e inizializzare array associativi, analizzare chiavi e valori di array, aggiungere ed eliminare elementi di array, rimuovere un array associativo e array di dati. Pertanto, speriamo che tutti i nostri lettori siano ora in grado di implementare tutti gli argomenti trattati per migliorare la loro conoscenza e comprensione degli array associativi. Provalo ora.


Linux
  1. Come creare una matrice di elementi unici da una stringa/array in Bash?

  2. Bash array di array?

  3. Ottieni tutti i file tranne i file nell'array - Bash?

  4. Matrici Bash con esempi

  5. Il tutorial Ultimate Bash Array con 15 esempi

Matrici Bash

Bash Shebang

Bash Scripting – Array associativo spiegato con esempi

Bash Scripting – Array indicizzato spiegato con esempi

Bash Beginner Series #4:Utilizzo di array in Bash

Come dichiarare un array 2D in bash