androide

Matrici di Bash

Bash Tutorial 6: Arrays

Bash Tutorial 6: Arrays

Sommario:

Anonim

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}"

0 1 2 3

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}

4

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}"

Hydrogen Helium Beryllium

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 terminal