Come simulare una serie di array in bash

Come simulare una serie di array in bash
Bash è davvero un linguaggio interpretato e interattivo e quanto spazio prenotare in anticipo non deve essere noto. È anche possibile preparare in modo dinamico un nuovo array senza dichiararlo o estendere un array precedentemente definito per includere ulteriori voci. Tuttavia, gli array multidimensionali non sono supportati da bash e non possiamo ottenere componenti di array che sono anche array. Fortunatamente, possono essere simulati array multidimensionali. Questo articolo fornirà alcune illustrazioni della simulazione di una serie di array in uno script bash.

Esempio 01: Utilizzo di semplici loop "per"

Abbiamo un esempio di simulazione di un array di array usando il metodo semplice. Iniziamo a dimostrare come caricare una tabella M X N definita dall'utente con numeri casuali (che non sono casuali, perché ogni colonna avrà sempre un numero simile in ogni corsa sulla maggior parte delle sue righe, ma ciò non si applica alla domanda ) e stampalo. Quando lavoriamo su una base che hai, bash versione 4, lo script seguente funzionerebbe sicuramente in modo efficiente. Non dovremmo dichiarare solitario 0; È più simile a una soluzione perfetta ai valori accettati vigorosamente. Abbiamo dichiarato un array con la parola chiave "-a". Se non definiamo l'array associativo usando -a, il codice potrebbe non funzionare per noi. La parola chiave di lettura viene quindi utilizzata per leggere l'input dell'utente, che è righe e colonne di una tabella. Quindi abbiamo usato due loop "per" per l'incrementazione di righe e colonne di una tabella. In per loop, abbiamo fatto un array bidimensionale. Nel prossimo per loop, sono stati visualizzati tutti i valori di un array.

Quando si esegue il file bash, chiederà a un utente di inserire righe e colonne come "M" e "N". Successivamente, per i loop genereranno una tabella bidimensionale come sotto.

Esempio 02: usando hash

Prendendo la stessa istanza, possiamo emulare gli array usando hash. Tuttavia, dobbiamo stare più attenti a guidare zeri e molte altre cose. La prossima spiegazione sta funzionando. Tuttavia, la via d'uscita è molto lontana dall'ideale. Abbiamo preso manualmente righe e colonne. Per loop viene utilizzato per fare una matrice. Quindi abbiamo usato hash per emulare l'array bidimensionale. Finalmente, l'array verrà stampato come di seguito.

Eseguire il file “Input.sh "nella shell bash usando il comando bash. Troverai una tabella con righe e colonne menzionata.

Esempio 03: Utilizzo di array associativi

Abbiamo un esempio di simulazione con un effetto un po 'simile usando gli array associativi usati come array di array come di seguito. Dopo la dichiarazione dell'array associativo, abbiamo definito valori per gli array separatamente. Successivamente, abbiamo fatto di stampare i valori in modo bidimensionale.

Puoi vedere l'output come un array bidimensionale durante l'esecuzione del file. Se ignoriamo la linea "dichiara -a arr", l'istruzione Echo può visualizzare (2 3) piuttosto che (0 1), poiché (0,0), (1,0) e altri potrebbero essere stati usati come matematica espressione e calcolato su 0 (il valore sul lato destro di una virgola).

Esempio 04: Utilizzo delle referenze del nome

In Bash, è un problema frequente con gli array di riferimento all'interno di array che dovrai costruire referenze di nome usando dichiarate -n. Quel nome in seguito -n funge da nome Ref per il valore allocato (dopo =). Attualmente, gestiamo questa variabile solo con il nome dell'attributo Ref per estendere come se fosse un array ed estende l'array appropriatamente citato come in anticipo. Facciamo un esempio di nome refs. Abbiamo dichiarato con successo due array. Successivamente, abbiamo assegnato entrambi gli array a un altro array come membro. Abbiamo usato per loop per creare un array bidimensionale. Abbiamo fatto un'altra variabile per aggiungere i valori uno per uno del "gruppo" dell'array per il confronto. In fondo, andrà ai membri degli array interni "bar" e "foo" per prendere valori e confrontarli mentre stampano il messaggio.

Quando eseguiamo il file "Input.sh ", vedrai l'output di seguito. La variabile "LST" ha valori di array interni all'interno dell'array "gruppi".

Esempio 05: Utilizzo della parola chiave Cut

Solo ora, mi sono imbattuto in esso. C'era stato un approccio abbastanza semplice che funzionava per tutti. Per mostrare una mappa principale per il sistema, ho deciso di utilizzare un array contenente un nome del dispositivo e una posizione dello schermo. Dobbiamo concatenare il titolo dell'unità e la posizione corrispondente di un display in una singola stringa, usando solo un delimitatore, che abbiamo assunto non si verificherà in nessuno dei nostri valori (nel mio caso, ho usato .). E ho usato una parola chiave "taglio" per dividere i valori concreti nei loro componenti, se necessario. Tuttavia, potrebbe esserci un approccio più chiaro e più semplice per farlo, e questo è solo per illustrare che in un certo senso, in Bash, possiamo costruire un array multidimensionale, sebbene non lo aiuti. Successivamente, devi stampare sia il nome del dispositivo che la sua posizione separatamente dopo aver creato la sottostringa.

Eseguiamo l'input "Input Bash.file sh ". Vedrai il dispositivo separato e la sua posizione nel prompt della shell come durante l'esecuzione. La soluzione funziona usando il comando Cut.

Esempio 06

Prendiamo un po 'più a lungo per emulare un array multidimensionale. Nella funzione load_alpha (), tutti gli alfabeti verranno caricati nell'array. Successivamente, la funzione print_alpha () viene dichiarata e utilizzata per stampare tutti gli alfabeti nell'ordine di riga-major come matrice o formato bidimensionale. D'altra parte, abbiamo usato la funzione rota () per ruotare l'array. Proviamo questo esempio nella shell bash per vedere i risultati.

Durante l'esecuzione, abbiamo trovato una struttura molto bella di array multidimensionale nel guscio bash come sotto

Conclusione

Abbiamo provato con successo alcuni esempi per la simulazione di array di array in bash. spero che funzioni!