GNU/Linux >> Linux Esercitazione >  >> Linux

Array negli script di shell

Sapere come lavorare con gli array negli script di shell ti aiuterà a lavorare con set di dati più grandi in modo molto efficiente. Ma cosa sono gli array e come puoi creare array? Scopriamolo!

Cosa sono gli array?

Se hai già una conoscenza di base di qualsiasi linguaggio di programmazione, sai cosa sono gli array. Ma per chi non lo sapesse, esaminiamo le basi degli array e impariamo come lavorarci.

Le variabili memorizzano singoli elementi di dati. Gli array, d'altra parte, possono memorizzare un numero virtualmente illimitato di elementi di dati. Quando si lavora con una grande quantità di dati, le variabili possono rivelarsi molto inefficienti ed è molto utile fare pratica con gli array.

Impariamo a creare array negli script di shell.

Creazione di array negli script della shell

Ci sono due tipi di array con cui possiamo lavorare, negli script di shell.

  • Matrici indicizzate – Archivia elementi con un indice che inizia da 0
  • Matrici associative – Archivia gli elementi in coppie chiave-valore

L'array predefinito creato è un array indicizzato. Se specifichi i nomi dell'indice, diventa un array associativo ed è possibile accedere agli elementi utilizzando i nomi degli indici anziché i numeri.

Dichiarazione di array:

root@ubuntu:~# declare -A assoc_array
root@ubuntu:~# assoc_array[key]=value
OR
root@ubuntu:~# declare -a indexed_array
root@ubuntu:~# indexed_array[0]=value

Nota la lettera maiuscola e minuscola a . A maiuscola viene utilizzato per dichiarare un array associativo mentre a minuscolo viene utilizzato per dichiarare un array indicizzato.

La declare la parola chiave viene utilizzata per dichiarare in modo esplicito gli array ma non è necessario utilizzarli. Quando crei un array, puoi semplicemente inizializzare i valori in base al tipo di array che desideri senza dichiarare esplicitamente gli array.

Lavorare con gli array negli script della shell

Ora che sai come creare array, impariamo come lavorare con gli array. Poiché si tratta di raccolte di elementi di dati, possiamo lavorare con loop e array contemporaneamente per estrarre i punti dati richiesti.

1. Accesso agli elementi dell'array individualmente

Poiché sappiamo che ogni punto dati viene indicizzato individualmente, possiamo accedere a tutti gli elementi dell'array specificando l'indice dell'array come mostrato di seguito:

assoc_array[element1]="Hello World"
echo ${assoc_array[element1]}

Allo stesso modo, accediamo ad alcuni elementi dell'array indicizzati. Possiamo specificare tutti gli elementi per l'array dell'indice delimitando con spazi perché l'indice viene generato automaticamente per ciascuno di quegli elementi.

index_array=(1 2 3 4 5 6)
echo ${index_array[0]}

Come puoi vedere, il primo elemento viene stampato automaticamente in base all'indice 0.

2. Lettura sequenziale degli elementi dell'array

Questo sarà un compito facile se conosci già i loop. In caso contrario, li tratteremo in un futuro tutorial. Useremo i cicli while o for negli script della shell per lavorare attraverso gli elementi dell'array. Copia lo script qui sotto e salvalo come .sh

#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)

for i in ${index_array[@]}
do
        echo $i
done

Lo script precedente produrrà quanto segue:

Ora potresti aver notato l'array_indice[@] e se ti stai chiedendo cosa sia il @ il simbolo è per, esamineremo lo stesso in questo momento.

Operazioni integrate per gli array negli script della shell

Ora che hai imparato ad accedere agli elementi individualmente e a usare i cicli for, impariamo le diverse operazioni disponibili per impostazione predefinita per gli array.

1. Accedi a tutti gli elementi di un array

Abbiamo imparato come accedere agli elementi fornendo l'indice o la chiave dell'array. Ma se vogliamo stampare tutti gli elementi contemporaneamente o lavorare con tutti gli elementi, possiamo usare un altro operatore che è il [@] simbolo.

Come hai notato nell'esempio sopra, ho usato questo simbolo quando volevo scorrere tutti gli elementi dell'array usando il ciclo for.

echo ${assoc_array[@]}

Quanto sopra stamperà tutti gli elementi che sono memorizzati all'interno dell'array assoc.

2. Conta il numero di elementi in un array

Simile a @ simbolo sopra, abbiamo il # simbolo che può essere preceduto dal nome di un array per fornirci il conteggio degli elementi memorizzati nell'array. Vediamo come funziona.

echo ${#index_array[@]}

Se vuoi contare il numero di caratteri utilizzati per un particolare elemento, possiamo semplicemente sostituire il @ simbolo con l'indice.

3. Elimina i singoli elementi dell'array

Sappiamo come aggiungere elementi di array e anche stamparli. Impariamo come eliminare elementi specifici. A tale scopo, utilizzeremo unset parola chiave.

unset index_array[1]

Sostituisci il nome dell'array e l'ID dell'indice nell'esempio di codice sopra e hai rimosso l'elemento dell'array che desideri. Abbastanza semplice non è vero?

Conclusione

Gli script della shell sono piuttosto vasti e possono sostituire qualsiasi funzione che puoi eseguire sul terminale con la persona giusta che scrive lo script. Alcune funzionalità aggiuntive degli array negli script di shell includono anche la possibilità di lavorare con regex (Espressioni regolari). Possiamo usare varie espressioni regolari per manipolare gli elementi dell'array all'interno degli script della shell.

Per ora, ci auguriamo che tu abbia una buona conoscenza della creazione e dell'utilizzo degli array e che sarai in grado di utilizzare gli array nei tuoi script. Commenta di seguito per farci sapere cosa ne pensi e se hai domande su questo argomento.


Linux
  1. Consenti Setuid sugli script della shell?

  2. Array associativi negli script della shell?

  3. Blocco corretto negli script della shell?

  4. Array in Unix Bourne Shell?

  5. Come eliminare i privilegi di root negli script della shell?

Come creare script di shell

Come utilizzare if-else negli script della shell?

Comprendere il ciclo for negli script della shell

Il ciclo while negli script della shell

Esegui tutti gli script della shell nella cartella

Esecuzione di script da un'altra directory