Bash Scripting – Array

Bash Scripting – Array

Array sono concetti importanti nella programmazione o nello scripting. Gli array ci consentono di archiviare e recuperare elementi in un modulo di elenco che può essere utilizzato per determinate attività. In bash abbiamo anche array che ci aiutano a creare script nella riga di comando per archiviare i dati in un formato elenco. In questo articolo comprenderemo le basi degli array nello scripting bash.

Creazione di array

Per creare un array di base in uno script bash, possiamo usare la dichiarazione -UN comando seguito dal nome della variabile di array che desideri fornire.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) 

O

#!/bin/usr/env bash sport[0]=football sport[1]=cricket sport[2]=hockey sport[3]=basketball 

Il valore degli elementi può essere qualsiasi numero intero, stringa o qualsiasi altra forma di dati, a piacere. Possiamo vedere che l'array viene dichiarato in uno script bash in due modi: il primo sembra più conveniente e meno frenetico da dichiarare. Se vogliamo dichiarare l'array in un colpo solo, la prima è la scelta ottimale ma se gli elementi devono essere aggiunti a pezzetti, la seconda è una buona scelta.

Stampa degli array

Dopo aver dichiarato l'array, se volessimo visualizzare tutti gli elementi dell'array possiamo utilizzare il simbolo @.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' 

echo '${array_name[@]}' 

Usiamo [@] come indice dell'array per visualizzare tutti gli elementi. Tutti gli elementi vengono stampati separati da spazi, le virgolette attorno alla variabile si espandono e stampano tutti gli elementi nell'array.

Iterazione sull'array

Per scorrere un array un elemento alla volta, possiamo utilizzare i cicli ed eseguire qualsiasi operazione all'interno del suo corpo.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) for i in ${nums[@]} do echo -e '$i 
' done 

Come possiamo vedere, abbiamo utilizzato un ciclo for per stampare gli elementi dell'array uno per uno. Nella sezione precedente abbiamo utilizzato il trucco di ottenere tutti gli elementi dell'array e di eseguirne l'iterazione uno per uno nel ciclo for. ${array_name[@]} si espande in tutti gli elementi dell'array e il ciclo for li ripete uno per uno con l'iteratore nell'esempio è l'iteratore variabile i , all'interno del corpo del ciclo for stampiamo il file variabile/iteratore i e quindi scorrere l'array.

Ottieni il numero di elementi nell'Array

Per recuperare il numero dell'array di elementi possiamo utilizzare l'operatore # prima del nome dell'array nelle lettere in ${array_name[@]}.

 #!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${#sport[@]}' 

Restituiamo quindi la dimensione dell'array utilizzando il comando ${#sport[@]}, il # viene utilizzato per ottenere la dimensione della variabile accanto, utilizzando le virgolette doppie viene valutato il valore del comando e otteniamo il numero di elementi dell'array desiderato.

Inserimento di un elemento in Array

Per inserire un elemento è abbastanza semplice, dobbiamo impostare l'indice appropriato dell'elemento seguito dal valore dell'elemento che desideri assegnare.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport[4]='dodgeball' sport[2]='golf' echo '${sport[@]}' 

Abbiamo aggiunto il 5° elemento (4° indice) nell'array e abbiamo anche modificato/modificato il 3° elemento dell'array (2° indice). IL nomearray[indice]=valore sono tutti i trucchi per aggiungere, modificare o inizializzare gli elementi dell'array.

Possiamo anche aggiungere elementi ad un array usando l'operatore +=.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) echo '${sport[@]}' sport+=('golf' 'baseball') echo '${sport[@]}' echo 'Size : ${#sport[@]}' 

Come visto nell'esempio, possiamo aggiungere più elementi all'array con un codice minimo. Usiamo array_name+=(elements) per aggiungere elementi all'array.

Eliminazione di un elemento da Array

Per eliminare un elemento dall'array possiamo usare il comando unset. Il comando prende il nome della variabile, nel nostro caso il nome dell'array e l'indice di quell'elemento. L'indice può anche essere relativo, ad esempio -1 indica l'ultimo elemento e -2 il penultimo e così via.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[1] echo '${sport[@]}' echo '${#sport[@]}' 

Come possiamo vedere, unset arrayname[index] eliminerà l'elemento su indice dall'array. Inoltre, la dimensione dell'array è stata ridotta da 4 a 3, il che indica che l'elemento è stato completamente rimosso e non semplicemente sostituito con spazi bianchi.

Utilizzo degli indici relativi

Se utilizziamo indici come -1,-2 e così via, gli elementi vengono referenziati dall'ultimo elemento e quindi possiamo eliminarli o modificarli con l'ordine relativo anche dal retro.

#!/bin/usr/env bash declare -a sport=( [0]=football [1]=cricket [2]=hockey [3]=basketball ) unset sport[-3] echo '${sport[@]}' 

Come possiamo vedere, anche l'indice 1 viene indicato come -3 dal retro e quindi diventa relativamente più semplice fare riferimento a determinati elementi in un array di grandi dimensioni.

Unisci una matrice

Possiamo unire (estrarre una pozione) un array per assegnarlo o stamparlo su un'altra variabile/array.

#!/bin/usr/env bash declare -a sport sport+=('football' 'cricket' 'hockey' 'basketball') sport+=('golf' 'baseball') echo 'sport = ${sport[@]}' arr='${sport[@]:1:3}' echo 'arr = ${arr[@]}' 

Abbiamo estratto un pezzo dall'array sport, ovvero l'elemento compreso tra gli indici 1 e 3 inclusi, e lo abbiamo assegnato alla variabile arr che è anch'essa un array. L'operatore @ ottiene tutti gli elementi dall'array e quindi possiamo unire l'array tra gli indici 1 e 3 in modo da avere gli elementi in 1,2 e 3 (cricket, hockey e baseball) dall'array sport.

Definire un array statico e stampare gli elementi dell'array

#To declare static Array programmingArray=(Java Python Ruby Perl) #In below 2 ways we can print the elements of the static array echo 'Way 1 of printing static values by using [@]:0 - ' ${programmingarray[@]$ echo 'Way 2 of printing static values by using [*]:0 - ' ${programmingarray[*]$ 

In 2 modi possiamo stampare elementi di array statici

Esecuzione del programma

sh So, we can give as sh arraycheck2.sh # arraycheck2.sh is the name of the script file here 

Passaggio degli argomenti della riga di comando in un file di script

#All the array elements are stored in an array called programmingArray programmingArray=('$@') #Index values start from 0 #If we do not specify the index, it will take up the size of first index value echo 'Size of programmingArray at 0th location..:' $(#programmingArray[0]} echo 'Size of programmingArray at 1st location..:' $(#programmingArray[1]} 

Lo script sopra può essere eseguito come

# Qui Java, Python e Ruby sono argomenti della riga di comando

sh arrayCheck.sh Java Python Ruby 

Passaggi di esecuzione dello script:

array di programmazione=(Java Python Ruby)

#Java sarà presente all'indice 0, la sua dimensione può essere calcolata nel modo seguente

${#programmazioneArray[0]}

Allo stesso modo, Python sarà presente nel primo indice, la sua dimensione può essere calcolata nel modo seguente

${#programmazioneArray[1]}

Produzione:

Iterazione dei valori dell'array utilizzando il ciclo for

$@ fornirà tutti i valori che sono stati passati tramite argomenti della riga di comando e verrà memorizzato in un array.

Può essere ripetuto utilizzando il ciclo for

declare -a programmingArray=('$@') i=0 for programming in '$@' do echo 'Array value at index ' $i ' : ' $programming i=$((i+1)); done 

Produzione:

Diamo una rapida occhiata a ciò che rappresenta ciascun simbolo

Sintassi

Produzione
arr=()

arr[0]=3 Sovrascrive il primo elemento

arr+=(4) Aggiungi valore/i

str=$(ls) Salva l'output di ls come stringa

arr=( $(ls) ) Salva l'output di ls come un array di file

${arr[@]:s:n} Recupera n elementi a partire dall'indice

#Possiamo fornire una serie di valori

come questo

arr=(uno due tre)

Per inizializzare un array
${arr[0]} Per recuperare il primo elemento. L'indice inizia sempre con 0
${arr[@]} Per recuperare tutti gli elementi e quindi possiamo eseguire l'iterazione in un ciclo
${!arr[@]} Per recuperare solo gli indici dell'array
${#arr[@]} Per calcolare la dimensione di un array
arr[2]=3 Per sovrascrivere il 3° elemento dobbiamo usarlo in questo modo. Poiché l'indice inizia da 0, arr[2] è corretto.
arr+=(40) Per aggiungere valori, possiamo usare + e quindi assegnare con = e quindi viene utilizzato +=.
str=$(ls) Per salvare l'output del comando ls come una stringa (per questo output viene mostrato l'esempio 4)
arr=( $(ls) ) Per salvare l'output di ls come un array di file (per questo output viene mostrato l'esempio 5)
${arr[@]:s:n} Per recuperare n elementi a partire dall'indice s