Come creare una funzione bash che restituisce un array

Come creare una funzione bash che restituisce un array
A prima vista può apparire che restituire un array da una funzione bash non sia realistico. Considerando tutti i vantaggi, può essere utile chiamare più metodi per costruire array per dividere il processo di raccolta di tutti i parametri appropriati per una chiamata Yad.

Ci sono molte ragioni per cui si potrebbe voler ripristinare un array di bash:

  • Gestire la durata della vita degli array è più semplice perché vengono assegnati localmente.
  • Per il raggiungimento just-in-time, ottenere array dai metodi può aiutare.
  • Per supportare le tecniche di algoritmo di registro, i nomi dei metodi che restituiscono array possono essere scacciati.

Potresti credere che Bash perda la capacità di restituire array di funzioni. Tuttavia, questo non è esattamente corretto. È possibile spostare l'array risultante su un metodo in riferimento, prendendo spunti dagli sviluppatori C/C ++. Tale strategia consente al metodo di continuare a essere libera da riferimenti a una variabile globale. Il seguente articolo mostra istanze chiare di questo caso.

Esempio 1: restituire un array

Accedi al sistema Linux e apri il terminale di comando per procedere. Creeremo un file bash chiamato "Script.sh "usando il tocco comando per restituire l'array usando la funzione bash. Lo script è il seguente:

$ touch script.sh

È possibile visualizzare il file appena creato in Casa directory. Apri questo file e scrivi il codice aggiunto in esso così com'è. Qui, stiamo tentando di creare un array associativo attraverso un argomento in un metodo di entrambi gli elenchi.

Inizialmente, abbiamo creato la funzione foo ().

All'interno di questo programma, abbiamo rimosso il termine "dichiarare", che è un comando preconfigurato bash che ci consente di modificare o personalizzare gli attributi, i metodi della shell si sono spalmati sulle variabili e dimostrano i valori di questi attributi all'interno del campata del nostro terminale di comando shell. Inoltre, può essere usato per definire una variabile lunga. Infine, viene utilizzato per definire le variabili.

Abbiamo aggiunto il valore "fooval" all'array "arr".

La parola chiave "-a" viene utilizzata per creare il Nomi Array associativo se supportato. Dobbiamo usare l'elenco/array come variabile globale, il che implica che solo un metodo, non uno script, può eseguire questa azione.

Abbiamo anche creato un altro array, chiamato "Myarr", per l'uso come riferimento. Bash consente al nome di una variabile relativa arr di essere diverso dal nome della variabile relativa Myarr.

Dopodiché, nell'ottava linea, abbiamo superato l'array "Myarr" alla festa foo () Funzionare come riferimento.

In passato, abbiamo usato il ciclo "per" per stampare entrambi gli array "arr" e "myarr" ai foo () funzione.

Ora controlleremo il risultato di questo codice. Eseguire il comando bash per eseguire il codice sopra. Puoi vedere che l'array è stato restituito alla funzione e quindi stampato.

$ Bash Script.sh

Esempio 2: restituire un altro array

Vediamo un altro esempio di restituzione di array a una funzione. Apri il tuo terminale di comando e crea un nuovo file chiamato "OpenVPN.registro "usando il file tocco comando, come segue:

$ TOUCT OpenVPN.tronco d'albero

Ora, apri "OpenVPN.registro "file e scrivere il seguente testo in questo file, come mostrato. Salva questo file e chiudilo.

Ancora una volta, apri la shell di comando e crea un altro file chiamato "Script.sh, "usando il tocco comando per aggiungere lo script bash al file.

$ touch script.sh

Successivamente, apri lo "script.File sh "e aggiungi il seguente codice in questo file così com'è. Salva e chiudi questo file. Questo script utilizzerà un metodo che legge valori/stringhe da un documento e restituisce un array:

  • Dichiarare l'array: clienti
  • Assegnare l'array restituito del metodo ai client Array
  • Show Array: clienti

Diamo ora uno sguardo dettagliato al funzionamento di questo script.

  • Abbiamo dichiarato una serie globale di "clienti" utilizzando la parola chiave "dichiara", seguita da "-a."
  • Il readarray () La funzione è stata definita. In questa funzione, abbiamo dichiarato alcune variabili locali. La variabile locale "array" è vuota, ma "io" e "j" sono stati definiti con il valore 0 da usare come iteratori.
  • Usando la modalità di lettura, leggeremo il testo dal file utilizzando iteratori per incrementare gli indici.
  • La riga "client [$ ((i ++))]+= $ riga;" viene utilizzato per aggiungere le righe di testo alla variabile "client" definita a livello globale.
  • Successivamente, "J ++" sta saltando sul prossimo indice.
  • La variabile "$ 1" viene utilizzata per salvare e restituire l'array appena creato da "OpenVPN.Registra "File di testo.
  • All'esterno della funzione, la stringa è stata dichiarata come "$ string" ed è stato dato un percorso del file come valore.
  • Questa stringa è stata passata al readarray Funzionare come riferimento per leggere il testo da questo file.
  • Successivamente, l'array "client" è stato stampato e l'intero testo al suo interno è stato visualizzato in una riga.
  • Ora visualizzeremo un messaggio che l'array non è più vuoto.
  • Il ciclo "per" è stato utilizzato per convertire il contenuto dell'array "client" nel tipo di array e dichiarare un indice per il contenuto usando l'affermazione "echo" $ i: $ client [$ i]."
  • Infine, abbiamo visualizzato un messaggio e stampato alcuni valori di array convertiti separatamente come una singola posizione indicizzata di un array.

Controlliamo ora l'output di questo script bash. Esegui il comando bash per eseguire lo "script.file sh ". Come puoi vedere, la prima istruzione Echo stamperà tutto il testo da "OpenVPN.File di registro ", che è stato salvato nell'array" client "come una riga. La seconda istruzione Echo visualizzerà il messaggio String. La terza istruzione Echo mostrerà l'array "client" in forma indicizzata, in quanto è appena stata convertita. Il quarto mostrerà di nuovo un messaggio. L'ultimo mostrerà individualmente il contenuto dell'array "client".

Conclusione

Questo articolo ha mostrato come restituire array (in particolare array associativo) a una funzione usando il comando incorporato "dichiara" con due esempi. Spero che questo articolo ti abbia aiutato a capire meglio questo argomento.