Bash Tutorial 6: Arrays
Sommario:
- Bash Arrays
- Creazione di array di Bash
- Creazione di array indicizzati numericamente
- Creazione di array associativi
- Operazioni su array
- Elementi di riferimento
- Lunghezza matrice
- Passa attraverso l'array
- Aggiungi un nuovo elemento
- Elimina un elemento
- Conclusione
Le matrici sono una delle strutture di dati più utilizzate e fondamentali. Puoi pensare a un array è una variabile che può memorizzare più variabili al suo interno., tratteremo gli array Bash e spiegheremo come usarli negli script Bash.
Bash Arrays
Bash supporta tipi di array unidimensionali indicizzati numericamente e associativi. Le matrici numeriche sono referenziate usando numeri interi e le associative sono referenziate usando stringhe.
Le matrici indicizzate numericamente sono accessibili dall'estremità usando indici negativi, l'indice
-1
riferimento all'ultimo elemento. Gli indici non devono essere contigui.
A differenza della maggior parte dei linguaggi di programmazione, gli elementi dell'array Bash non devono essere dello stesso tipo di dati. È possibile creare un array che contiene sia stringhe che numeri.
Bash non supporta array multidimensionali e non è possibile avere elementi array che sono anche array.
Non esiste un limite al numero massimo di elementi che possono essere memorizzati in un array.
Creazione di array di Bash
Le matrici in Bash possono essere inizializzate in diversi modi.
Creazione di array indicizzati numericamente
Le variabili di Bash non sono tipizzate, qualsiasi variabile può essere utilizzata come matrice indicizzata senza dichiararla.
Per dichiarare esplicitamente un array, utilizzare l'integrato declare:
declare -a array_name
Un modo per creare un array indicizzato è utilizzando il seguente modulo:
array_name=value_1 array_name=value_2 array_name=value_n
Dove
index_*
è un numero intero positivo.
Un altro modo per creare un array numerico è specificare l'elenco degli elementi tra parentesi, separati da uno spazio vuoto:
array_name=(element_1 element_2 element_N)
Quando l'array viene creato utilizzando il modulo sopra, l'indicizzazione inizia da zero, ovvero il primo elemento ha un indice di
0
.
Creazione di array associativi
A differenza dell'indicizzazione numerica, gli array associativi devono essere dichiarati prima di poter essere utilizzati.
Per dichiarare un array associativo usa l'integrato
declare
con l'opzione
-A
(maiuscola):
declare -A array_name
Le matrici associative possono essere create utilizzando il seguente modulo:
declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz
Dove
index_*
può essere qualsiasi stringa.
È inoltre possibile creare un array associativo utilizzando il modulo seguente:
declare -A array_name array_name=(=value_foo =value_bar =value_xyz)
Operazioni su array
La sintassi delle matrici di Bash all'inizio può sembrare un po 'strana, ma avrà più senso una volta letto questo articolo.
Elementi di riferimento
Per fare riferimento a un singolo elemento, è necessario conoscere l'indice degli elementi.
È possibile fare riferimento a qualsiasi elemento utilizzando la sintassi seguente:
${array_name}
La sintassi per l'accesso a un elemento array è simile alla sintassi della maggior parte dei linguaggi di programmazione. Le parentesi graffe
${}
sono necessarie per evitare gli operatori di espansione del nome file della shell.
Stampiamo l'elemento con indice di
1
:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}
Helium
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium
L'unica differenza tra
@
e
*
è quando il modulo
${my_array}
è racchiuso tra virgolette. In questo caso,
*
espande in una singola parola in cui gli elementi dell'array sono separati da spazio.
@
espande ogni elemento dell'array in una parola separata. Ciò è particolarmente importante quando si utilizza il modulo per analizzare gli elementi dell'array.
Per stampare le chiavi dell'array aggiungere il
!
operatore prima del nome dell'array:
${!array_name}
Ecco un esempio:
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"
Lunghezza matrice
Per ottenere la lunghezza di un array, utilizzare il modulo seguente:
${#array_name}
La sintassi è la stessa di quando si fa riferimento a tutti gli elementi con l'aggiunta del carattere
#
prima del nome dell'array.
## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}
Passa attraverso l'array
Il modo più comune per scorrere su ogni elemento di un array è utilizzare il ciclo for:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done
Il codice qui sopra ripeterà l'array e stamperà ogni elemento in una nuova riga:
Hydrogen Helium Lithium Beryllium
Ecco un esempio di come stampare tutte le chiavi e i valori:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Un altro modo per eseguire il loop in un array è ottenere la lunghezza dell'array e utilizzare il loop in
C style
:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done
0 Hydrogen 1 Helium 2 Lithium 3 Beryllium
Aggiungi un nuovo elemento
Per aggiungere un nuovo elemento a un array bash e specificarne l'indice, utilizzare il seguente modulo:
my_array="New Element"
Ecco un esempio:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Aluminum
Un altro modo per aggiungere un nuovo elemento a un array senza specificare l'indice consiste nell'utilizzare l'operatore
+=
. Puoi aggiungere uno o più elementi:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"
Hydrogen Helium Lithium Beryllium Cobalt Nickel
Elimina un elemento
Per eliminare un singolo elemento, devi conoscere l'indice degli elementi. Un elemento può essere rimosso usando il comando
unset
:
unset my_array
Vediamo un esempio:
declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"
Conclusione
Abbiamo spiegato come creare array associativi e indicizzati numericamente. Abbiamo anche mostrato come scorrere le matrici, calcolare la lunghezza dell'array e aggiungere e rimuovere elementi.
bash terminalMicrosoft Research Asia assegna i gate a 10 anni Bash
Microsoft Research Asia è passata da una dozzina di persone nel 1998 a più di 350 un decennio dopo.
Come eseguire Bash su Ubuntu su Windows 10
L`abilitazione di Windows Subsystem per Linux consente di eseguire Bash su Ubuntu su Windows 10, script Bash , Strumenti da riga di comando di Linux, strumenti Linux-first.
Bash per loop
Esistono 3 costrutti di loop di base negli script Bash, per loop, while loop e fino a loop. In questo tutorial, tratteremo le basi di for loop in Bash e le istruzioni break e continue per modificare il flusso di un loop.







