Come utilizzare gli array di indici in bash

Come utilizzare gli array di indici in bash
Bash fornisce supporto per gli array indicizzati, che sono essenzialmente elenchi di elementi a cui è possibile accedere utilizzando il loro numero indice. Gli array indicizzati sono particolarmente utili quando si desidera archiviare e manipolare molti valori correlati, leggi ulteriormente questo articolo per imparare a utilizzare gli array di indici.

Cosa sono gli array di indici

Gli array indicizzati sono una raccolta di elementi in bash a cui è possibile accedere utilizzando un indice o una chiave. Questi array possono essere utilizzati per archiviare e recuperare i dati in un ordine specifico, rendendo più semplice la gestione di grandi quantità di dati. La sintassi per dichiarare un array indicizzato in bash è la seguente:

= (Element1 Element2 Element3…)

Qui, Array_Name è il nome dell'array e Element1, Element2, Element3 e così via sono i valori da archiviare nell'array. I valori sono separati da spazi bianchi e si noti che è anche possibile utilizzare il comando dichiara per creare un array.

Come utilizzare gli array indicizzati in bash

Per creare un array di indici in bash, è semplicemente necessario dichiarare una variabile e assegnargli i valori racchiusi tra parentesi e separati da spazi. Ecco alcuni esempi che dimostrano come utilizzare gli array indicizzati in Bash:

  • Riordinare un elenco
  • Filtraggio di un elenco
  • Contare gli eventi
  • Aggiornamento di un elenco

Riordinare un elenco in bash

Se hai un elenco di elementi in un certo ordine e vuoi riordinarli in modo diverso. È possibile utilizzare un array di indici per creare un nuovo ordine per gli elementi, come segue:

#!/Bin/Bash
oggetti = ("mango" "ananas" "fragola" "ciliegia" "uva")
ordine = (4 2 0 3 1)
Per i in "$ order [@]"
Fare
echo $ articoli [$ i]
Fatto

In questo esempio, creiamo un array chiamato elementi con cinque elementi. Creiamo anche un array di indici chiamato ordine, che specifica un nuovo ordine per gli elementi. Quindi ti avviciniamo attraverso l'array degli ordini e utilizziamo ogni valore come indice per recuperare l'elemento corrispondente dall'array di elementi e stamparlo.

Filtrando un elenco in bash

Se hai un elenco di elementi e si desidera filtrare determinati elementi in base a una condizione. È possibile utilizzare un array di indici per tenere traccia degli indici degli articoli che soddisfano la condizione, come segue:

#!/Bin/Bash
oggetti = ("mango" "ananas" "fragola" "ciliegia" "uva")
indici = ()
per i in "$ !elementi[@]"
Fare
if [[$ articoli [$ i] == * "r" *]]
Poi
Indici+= ($ i)
fi
Fatto
Per i in "$ indici [@]"
Fare
echo $ articoli [$ i]
Fatto

In questo esempio, creiamo un array chiamato elementi con cinque elementi. Creiamo anche un array indice vuoto chiamato indici. Quindi passiamo attraverso l'array degli elementi e controlliamo se ogni articolo contiene la lettera "R". Se lo fa, aggiungiamo il suo indice all'array degli indici. Infine, passiamo attraverso l'array degli indici e utilizziamo ogni valore come indice per recuperare l'elemento corrispondente dall'array di elementi e stamparlo.

Contare gli eventi in bash

Se hai un elenco di elementi e si desidera contare il numero di occorrenze di ciascun elemento, è possibile utilizzare un array di indici per tenere traccia dei conteggi ed ecco un esempio per la dimostrazione:

#!/Bin/Bash
oggetti = ("mango" "ananas" "fragola" "ciliegia" "uva")
conteggi = ()
per i in "$ !elementi[@]"
Fare
Se [[ ! "$ conta [@]" = ~ "$ articoli [$ i]"]]
Poi
conteggi+= ("$ articoli [$ i] 1")
altro
index = $ (echo "$ conta [@]" | tr "'\ n' | grep -n"^$ articoli [$ i] "| cu)
count = $ (echo "$ counts [$ index -1]" | taglio -d "-f2)
Counts [$ INDEX-1] = "$ articoli [$ i] $ ((conteggio+1))"
fi
Fatto
Per il conteggio in "$ conta [@]"
Fare
Echo $ Count
Fatto

Inizializza prima un array chiamato "elementi" con un elenco di stringhe. Quindi dichiara un array vuoto chiamato "conteggi". A per loop viene creato per iterare per ogni elemento nell'array "elementi" e per ogni elemento che controlla se esiste già nell'array "conteggi".

Se non esiste, aggiunge l'articolo e il conteggio di 1 all'array "conta". Se esiste, aumenta il conteggio di quell'elemento nell'array "conta". Infine, per stampare ogni elemento e il suo numero corrispondente viene utilizzato un altro per loop. L'output di questo codice stamperà il conteggio di ciascun elemento nell'array "elementi", con i duplicati contati separatamente.

Aggiornamento di un elenco in bash

Se hai un elenco di elementi e si desidera aggiungere o eliminare elementi da esso, puoi usare un array di indici per esso ed ecco un esempio per la dimostrazione:

#!/Bin/Bash
oggetti = ("mango" "ananas" "fragola" "ciliegia" "uva")
# Aggiunta di un nuovo elemento all'array indicizzato all'indice 2
Articoli [6] = "Orange"
# Eliminazione dell'elemento su indice 2 dall'array indicizzato
articoli non impostati [2]
# Stampa l'array aggiornato
echo "$ elementi [@]"

Nello script un array indicizzato "elementi" è definito con cinque elementi iniziali. Per aggiungere un nuovo elemento, il valore viene semplicemente assegnato all'indice desiderato usando l'array di sintassi [indice] = valore. In questo script, "Orange" viene aggiunto all'indice 6 dell'array. Per eliminare un elemento, utilizziamo il comando unset seguito dall'indice dell'elemento che vogliamo rimuovere. In questo caso, l'elemento su Index 2 ("Strawberry") viene eliminato. L'array aggiornato viene quindi stampato utilizzando la sintassi “$ array [@]”, che espande l'intero array.

Conclusione

Gli array indicizzati sono una pratica struttura di bash che consente di archiviare e manipolare più valori utilizzando una singola variabile. Comprendendo la sintassi e l'uso di array indicizzati, è possibile scrivere script bash più efficienti ed efficaci.