Come manipolare e controllare i dati con Bash Array

Come Manipolare E Controllare I Dati Con Bash Array



Una variabile di matrice viene utilizzata in qualsiasi linguaggio di programmazione per memorizzare più valori utilizzando un indice. L'indice dell'array può essere un numero o una stringa. L'array che contiene l'indice numerico è chiamato “array numerico” e l'array che contiene il valore stringa come indice è chiamato “array associativo”. In Bash è possibile creare sia array numerici che associativi. I metodi per manipolare e controllare i dati dell'array Bash sono mostrati in dettaglio utilizzando 15 esempi in questo tutorial.

Elenco dei contenuti:

  1. Definire una matrice per indice
  2. Definire una matrice con più valori
  3. Definire un array associativo
  4. Contare i valori dell'array
  5. Leggi i valori dell'array per loop
  6. Leggere i valori particolari dell'array
  7. Inserisci i valori della matrice
  8. Leggere il contenuto di un file nell'array
  9. Combina i valori dell'array
  10. Modificare i valori della matrice
  11. Rimuovere i valori della matrice
  12. Cerca e sostituisci i valori dell'array
  13. Utilizzare un array come argomento di funzione
  14. Restituisce l'array dalla funzione
  15. Rendi vuoto l'array

Definire una matrice per indice

Il metodo per dichiarare un array menzionando gli indici numerici sequenziali o non sequenziali è mostrato nello script seguente. Questo tipo di array è chiamato array numerico. In questo caso, l'array '$books' viene creato definendo tre indici sequenziali e l'array '$products' viene creato definendo quattro indici non sequenziali. Tutti i valori di entrambi gli array vengono stampati utilizzando la funzione 'printf'.







#!/bin/bash

#Definisce l'indice dell'array in ordine sequenziale

libri [ 0 ] = 'Imparare la bash Shell'

libri [ 1 ] = 'Operazioni di sicurezza informatica con bash'

libri [ 2 ] = 'Suggerimenti per la riga di comando di Bash'

eco 'Tutti i valori del primo array:'

printf '%s\n' ' ${libri[@]} '

#Definisce l'indice dell'array in ordine non sequenziale

prodotti [ 10 ] = 'Penna'

prodotti [ 5 ] = 'Matita'

prodotti [ 9 ] = 'Regolare'

prodotti [ 4 ] = 'Carta formato A4'

eco

eco 'Tutti i valori del secondo array:'

printf '%s\n' ' ${prodotti[@]} '

Produzione :



Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori di entrambi gli array vengono stampati nell'output. L'ordine degli indici viene mantenuto al momento della stampa per l'array di indici non sequenziali:



  p1





Vai all'inizio

Definire una matrice con più valori

Un array numerico con più valori può essere dichiarato utilizzando il comando “declare” con l'opzione -a o senza utilizzare il comando “declare”. Nello script seguente, il primo array viene dichiarato utilizzando il comando 'declare' e il secondo array viene creato senza utilizzare il comando 'declare'.



#!/bin/bash

#Dichiara un array numerico con la parola chiave 'declare'

dichiarare -UN nomi = ( 'Michael' 'Davide' 'Alessandro' 'Tommaso' 'Roberto' 'Richard' )

#Stampa i valori dell'array

eco 'Tutti i valori del primo array:'

printf '%s\n' ' ${nomi[@]} '

#Dichiara un array numerico senza la parola chiave 'dichiara'

libri = ( 'Tutorial sullo scripting della shell' 'Bish Bash Bosh!' 'Impara rapidamente Bash' )

#Aggiungi nuova riga

eco

#Stampa i valori dell'array

eco 'Tutti i valori del secondo array:'

printf '%s\n' ' ${libri[@]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori di entrambi gli array sono stampati qui:

  p2

Vai all'inizio

Definire un array associativo

L'array che contiene il valore stringa come indice è chiamato array associativo. L'opzione -A viene utilizzata con il comando 'dichiara' in Bash per creare un array Bash associativo. Nello script seguente, il primo array associativo viene dichiarato citando separatamente gli indici e il secondo array viene dichiarato citando tutte le coppie chiave-valore al momento della dichiarazione dell'array.

#!/bin/bash

#Dichiara una variabile di array associativa senza valore

dichiarare -UN dipendente

#Assegnare il valore separatamente definendo l'indice

dipendente [ 'id' ] = '78564'

dipendente [ 'nome' ] = 'Attori disponibili'

dipendente [ 'inviare' ] = 'AMMINISTRATORE DELEGATO'

dipendente [ 'stipendio' ] = 300000

#Stampa due valori dell'array

eco 'ID Dipendente: ${dipendente[id]} '

eco 'Nome dipendente: ${dipendente[nome]} '

#Dichiara un array associativo con valori

dichiarare -UN corso = ( [ codice ] = 'CSE-206' [ nome ] = 'Programmazione orientata agli oggetti' [ credito_ora ] = 2.0 )

#Aggiungi nuova riga

eco

#Stampa due valori di array del secondo array

eco 'Nome del corso: ${corso[nome]} '

eco 'Ora di credito: ${corso[credit_hour]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori particolari dell'array associativo vengono stampati qui menzionando la chiave o il valore dell'indice:

  p3

Vai all'inizio

Contare i valori dell'array

Il metodo per contare gli elementi totali dell'array numerico e dell'array associativo è mostrato nel seguente script:

#!/bin/bash

#Dichiara un array numerico

dichiarare -UN nomi = ( 'Michael' 'Davide' 'Alessandro' 'Tommaso' 'Roberto' 'Richard' ) ;

eco 'La lunghezza dell'array numerico è ${#nomi[@]} '

#Dichiara un array associativo

dichiarare -UN corso = ( [ codice ] = 'CSE-206' [ nome ] = 'Programmazione orientata agli oggetti' [ credito_ora ] = 2.0 )

eco 'La lunghezza dell'array associativo è ${#corso[@]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. La lunghezza dell'array numerico e associativo viene stampata qui:

  p4

Vai all'inizio

Leggi i valori dell'array per ciclo

Il metodo per leggere tutti i valori di un array numerico e di un array associativo utilizzando il ciclo 'for' è mostrato nel seguente script:

#!/bin/bash

#Dichiara un array numerico

dichiarare -UN libri = ( 'Tutorial sullo scripting della shell' 'Bish Bash Bosh!' 'Impara velocemente Bash' )

#Stampa i valori dell'array numerico

eco 'I valori dell'array numerico sono:'

per In In ' ${libri[@]} '

Fare

eco ' $ dentro '

Fatto

eco

#Dichiara un array associativo con valori

dichiarare -UN clienti = (

[ id ] = 'H-5623'

[ nome ] = 'Sig. Ahnaf'

[ indirizzo ] = '6/A, Dhanmondi, Dacca.'

[ telefono ] = '+8801975642312' )

#Stampa i valori dell'array associativo

eco 'I valori dell'array associativo sono:'

per K In ' ${!clienti[@]} '

Fare

eco ' $ k => ${clienti[$k]} '

Fatto

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. Qui, i valori dell'array numerico e le coppie chiave-valore dell'array associativo vengono stampati nell'output:

  p5

Vai all'inizio

Leggi il particolare intervallo di valori dell'array

I valori dell'array del particolare intervallo degli indici sono mostrati nello script seguente. Nello script viene definito un array numerico di quattro elementi. Due valori dell'array dal secondo indice dell'array verranno stampati successivamente.

#!/bin/bash

#Dichiara un array numerico

dichiarare -UN torte = ( 'Torta al cioccolato' 'Torta alla vaniglia' 'Torta di velluto rosso' 'torta di fragole' )

#Stampa i valori specifici dell'array

eco 'Il 2° e il 3° elemento dei valori dell'array sono:'

printf '%s\n' ' ${torte[@]:1:2} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. Il secondo e il terzo valore dell'array sono 'Vanilla Cake' e 'Red Velvet Cake' che vengono stampati nell'output:

  p6

Vai all'inizio

Inserisci i valori dell'array

Il metodo per aggiungere più valori alla fine dell'array è mostrato nello script seguente. L'array principale che è '$books' contiene tre elementi e due elementi vengono aggiunti alla fine dell'array '$books'.

#!/bin/bash

#Dichiara un array numerico

dichiarare -UN libri = ( 'Tutorial sullo scripting della shell' 'Bish Bash Bosh!' 'Impara velocemente Bash' )

#Stampa i valori dell'array prima di inserirli

eco 'Valori matrice:'

printf '%s\n' ' ${libri[@]} '

eco

libri = ( ' ${libri[@]} ' 'Riga di comando di Linux e Bibbia dello scripting di shell' 'Guida avanzata allo scripting Bash di Mendel Cooper' )

#Stampa i valori dell'array dopo l'inserimento

eco 'Valori dell'array dopo aver inserito due valori:'

printf '%s\n' ' ${libri[@]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori dell'array prima e dopo l'inserimento di nuovi valori vengono stampati nell'output:

  p7

Vai all'inizio

Leggere il contenuto del file nell'array

Crea un file di testo denominato 'fruits.txt' con il seguente contenuto per testare lo script di questo esempio:

frutta.txt

Mango

Jackfruit

Ananas

Arancia

Banana

Nello script seguente, il contenuto di un file viene archiviato in un array denominato '$data'. Qui, ogni riga del file viene memorizzata come ciascun elemento dell'array. Successivamente, vengono stampati i valori dell'array.

#!/bin/bash

#Leggi il nome del file dall'utente

Leggere -P 'Inserisci il nome del file:' nome del file

Se [ -F $nomefile ]

Poi

#Leggi il contenuto del file in un array'

dati = ( ` gatto ' $nomefile ' ` )

eco 'Il contenuto del file è riportato di seguito:'

#Leggi il file riga per riga

per linea In ' ${dati[@]} '

Fare

eco $linea

Fatto

Essere

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. L'output mostrato dal comando 'cat' e l'output dello script sono simili perché si accede allo stesso file tramite il comando 'cat' e lo script:

  p8

Vai all'inizio

Combina i valori dell'array

Viene creato un nuovo array combinando i valori di più array. Nello script seguente vengono definiti due array numerici di stringhe. Quindi, viene creato un nuovo array combinando i valori di questi array.

#!/bin/bash

#Dichiara il primo array

dichiarare -UN nomeLista1 = ( 'Michael' 'Davide' 'Alessandro' 'Tommaso' )

eco 'I primi valori dell'array sono:'

printf '%S, ' ${ListaNomi1[@]}

eco

#Dichiara il secondo array

dichiarare -UN nomeLista2 = ( 'Roberto' 'Richard' )

eco 'I valori del secondo array sono:'

printf '%S, ' ${ListaNomi2[@]}

eco

#Crea un nuovo array combinando due array

array_combinato = ( ' ${ListaNomi1[@]} ' ' ${ListaNomi2[@]} ' )

eco 'I valori dell'array combinati sono:'

printf '%S, ' ${array_combinato[@]}

eco

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. Qui, i valori di tre array vengono stampati nell'output. Il terzo array contiene tutti i valori del primo e del secondo array:

  p9

Vai all'inizio

Modificare i valori della matrice

Il metodo per aggiornare uno o più valori dell'array menzionando l'indice è mostrato nel seguente script:

#!/bin/bash

#Dichiara il primo array

dichiarare -UN Lista di nomi = ( 'Michael' 'Davide' 'Alessandro' 'Tommaso' )

eco 'Valori matrice:'

printf '%S, ' ${ListaNomi[@]}

eco

#Aggiorna il 2° valore dell'array

Lista di nomi [ 1 ] = 'Roberto'

eco 'Valori dell'array dopo l'aggiornamento:'

printf '%S, ' ${ListaNomi[@]}

eco

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori dell'array principale e degli array aggiornati vengono stampati nell'output:

  p10

Rimuovere i valori della matrice

Il comando 'unset' viene utilizzato per rimuovere l'elemento particolare o tutti gli elementi dell'array. Nello script seguente viene rimosso il secondo elemento dell'array.

#!/bin/bash

#Dichiara un array numerico

dichiarare -UN libri = ( 'Tutorial sullo scripting della shell' 'Bish Bash Bosh!' 'Impara velocemente Bash' )

#Stampa i valori dell'array prima di rimuoverli

eco 'Valori matrice:'

printf '%s\n' ' ${libri[@]} '

eco

#Rimuovere il 2° elemento

non settato libri [ 1 ]

#Stampa i valori dell'array dopo la rimozione

eco 'Valori dell'array dopo aver rimosso il 2° valore:'

printf '%s\n' ' ${libri[@]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori dell'array principale e i valori dell'array dopo aver rimosso un valore vengono stampati nell'output:

  p11

Vai all'inizio

Cerca e sostituisci i valori dell'array

Nello script seguente, il valore particolare dell'array viene sostituito da un altro valore se il valore di ricerca definito nel modello corrisponde a qualsiasi valore dell'array '$names'.

#!/bin/bash

#Dichiara il primo array

dichiarare -UN nomi = ( 'Michael' 'Davide' 'Alessandro' 'Tommaso' )

#Stampa i valori dell'array originale

eco 'Valori dell'array originale:'

printf '%s\n' ' ${nomi[@]} '

#Genera una stringa dopo aver sostituito i valori dell'array

array_aggiornato = ${nomi[@]/Alessandro/Riccardo}

#Stampa i valori dell'array dopo la sostituzione

eco 'Valori dell'array dopo la sostituzione:'

printf '%s\n' ' ${array_aggiornato[@]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. I valori dell'array principale e i valori dell'array dopo la sostituzione di un valore vengono stampati nell'output:

  p12

Vai all'inizio

Utilizzare un array come argomento di funzione

Nello script seguente, una variabile di array viene passata come argomento della funzione e i valori di tale array vengono stampati successivamente.

#!/bin/bash

#Dichiara un array di numeri

dichiarare -UN numeri = ( 10 6 Quattro cinque 13 8 )

#Definire una funzione che prenderà un valore di argomento

funz ( )

{

#Leggi il primo argomento

numeri = $ 1

#Stampa i valori dell'array

eco 'Valori matrice:'

printf '%d\n' ' ${numeri[@]} '

}

#Chiama la funzione con l'array come argomento

funz ' ${numeri[@]} '

Produzione :

Dopo l'esecuzione dello script viene visualizzato il seguente output:

  p13

Vai all'inizio

Restituisce una matrice dalla funzione

Nello script seguente la funzione viene chiamata con quattro argomenti numerici. Viene creato un array con i valori degli argomenti e tale array viene restituito dalla funzione al chiamante.

#!/bin/bash

#Definire una funzione che legge quattro valori di argomento

funz ( )

{

#Leggi i valori degli argomenti

numeri = ( $ 1 $ 2 $ 3 $ 4 )

#Restituisce l'array

eco ' ${numeri[@]} '

}

#Chiama la funzione con tre argomenti

valore_ritorno =$ ( funz 78 Quattro cinque 90 23 )

#Memorizza il valore restituito in un array

Leggere -UN nessuno <<< $val_ritorno

#Stampa i valori dell'array restituito

eco 'I valori dell'array sono:'

per In In ' ${numero[@]} '

Fare

eco ' $ dentro '

Fatto

Produzione :

Dopo l'esecuzione dello script viene visualizzato il seguente output:

Vai all'inizio

Rendi vuoto l'array

Lo script seguente mostra il metodo per rendere vuoto un array utilizzando il comando 'unset'. Il numero totale di valori dell'array viene stampato prima e dopo aver svuotato l'array.

#!/bin/bash

#Dichiara un array di numeri

dichiarare -UN numeri = ( 10 6 Quattro cinque 13 80 )

eco 'Numeri di valori di array: ${#numeri[@]} '

#Rende vuoto l'array

non settato numeri

eco 'Numero di valori dell'array dopo aver reso l'array vuoto: ${#numeri[@]} '

Produzione :

Il seguente output viene visualizzato dopo l'esecuzione dello script. Il numero di elementi dell'array è diventato 0 dopo aver vuoto l'array:

  p15

Vai all'inizio

Conclusione

In questo tutorial vengono mostrati diversi metodi di dichiarazione, accesso, modifica e rimozione delle variabili dell'array nello script Bash utilizzando 15 semplici esempi. Ci auguriamo che questo tutorial aiuti gli utenti Bash a conoscere in dettaglio gli usi dell'array Bash.