So erstellen Sie eine Bash -Funktion, die ein Array zurückgibt

So erstellen Sie eine Bash -Funktion, die ein Array zurückgibt
Es mag auf den ersten Blick erscheinen, dass die Rückgabe eines Arrays aus einer Bash -Funktion nicht realistisch ist. In Anbetracht aller Vorteile kann es nützlich sein, mehrere Methoden aufzurufen, um Arrays zu konstruieren, um den Prozess des Sammelns aller entsprechenden Parameter für einen YAD -Aufruf aufzuteilen.

Es gibt viele Gründe, warum man ein Bash -Array wiederherstellen möchte:

  • Die Verwaltung der Lebensdauer von Arrays ist einfacher, da sie lokal zugewiesen werden.
  • Für die Just-in-Time-Erreichung kann das Erhalten von Arrays von Methoden helfen.
  • Um Logalgorithmus -Techniken zu unterstützen, können die Namen von Methoden, die Arrays zurückgeben.

Sie können glauben, dass Bash die Fähigkeit verliert, Funktionsarrays zurückzugeben. Das ist jedoch nicht genau richtig. Es ist möglich, das resultierende Array durch Referenz auf eine Methode zu verschieben, wobei Cues von C/C ++ - Entwicklern entnommen wird. Eine solche Strategie ermöglicht es der Methode, weiterhin frei von Referenzen auf eine globale Variable zu sein. Der folgende Artikel zeigt klare Fälle dieses Falls.

Beispiel 1: Rückgabe eines Arrays

Melden Sie sich in Ihr Linux -System an und öffnen Sie das Befehlsterminal, um fortzufahren. Wir erstellen eine Bash -Datei mit dem Namen „Skript.sh ”mit dem berühren Befehl, um das Array mit der Bash -Funktion zurückzugeben. Das Skript lautet wie folgt:

$ Touchskript.Sch

Sie können die neu erstellte Datei in der anzeigen Heim Verzeichnis. Öffnen Sie diese Datei und schreiben Sie den angehängten Code nach wie. Hier versuchen wir, ein assoziatives Array durch ein Argument in einer Methode aus beiden Listenpass zu erstellen.

Anfangs haben wir die Funktion erstellt foo ().

In diesem Programm haben wir den Begriff „Deklare“ entfernt, bei dem es sich um einen vorkonfigurierten Bash-Befehl handelt, mit dem wir die Attribute ändern oder anpassen können, die Methoden der Schale, die an die Variablen verschmiert sind, und die Werte dieser Attribute innerhalb der zu demonstrieren Spanne unseres Shell -Befehlsanschlusss. Darüber hinaus kann es verwendet werden, um eine lange Variable zu definieren. Zuletzt wird es verwendet, um die Variablen zu definieren.

Wir haben dem "arr" -Array "fooval" hinzugefügt.

Das Schlüsselwort „-a“ wird verwendet, um das zu erstellen Namen assoziatives Array, falls unterstützt. Wir müssen die Liste/das Array als globale Variable verwenden, was impliziert, dass nur eine Methode, nicht als Skript, diese Aktion ausführen kann.

Wir haben auch ein weiteres Array mit dem Namen "Myarr" zur Verwendung als Referenz erstellt. Bash ermöglicht es, dass der Name einer relativen Variablen -ARR dem Namen der relativen Variablen myarr unterscheidet.

Danach haben wir in der achten Zeile das „Myarr“ -Array an die Bash übergeben foo () Funktion als Referenz.

In der Vergangenheit haben wir die "für" -Schloop verwendet, um sowohl die "arr" als auch "myarr" -Arrays auf die zu drucken foo () Funktion.

Wir werden nun das Ergebnis dieses Codes überprüfen. Führen Sie den Befehl bash aus, um den obigen Code auszuführen. Sie können sehen, dass das Array in die Funktion zurückgegeben und dann gedruckt wurde.

$ bash skript.Sch

Beispiel 2: Rückgabe eines weiteren Arrays

Sehen wir uns ein weiteres Beispiel für die Rückgabe von Arrays in eine Funktion an. Öffnen Sie Ihr Befehlsterminal und erstellen Sie eine neue Datei mit dem Namen „OpenVPN.Protokollieren ”Verwenden Sie die berühren Befehl wie folgt:

$ touch openvpn.Protokoll

Öffnen Sie nun das „OpenVPN.Logieren Sie die Datei und schreiben Sie den folgenden Text in diese Datei, wie gezeigt. Speichern Sie diese Datei und schließen Sie sie.

Öffnen Sie erneut die Befehlsschale und erstellen Sie eine andere Datei mit dem Namen „Skript.sh “, benutzt die berühren Befehl zum Hinzufügen des Bash -Skripts zur Datei.

$ Touchskript.Sch

Öffnen Sie als nächstes das Drehbuch „Skript.sh ”Datei und fügen Sie den folgenden Code in diese Datei nach-iS an. Speichern und schließen Sie diese Datei. Dieses Skript verwendet eine Methode, die Werte/Zeichenfolgen aus einem Dokument liest und ein Array zurückgibt:

  • Deklarieren Sie das Array: Clients
  • Zuordnen Sie das zurückgegebene Array der Methode an Array -Clients
  • SHOW Array: Clients

Lassen Sie uns jetzt einen detaillierten Blick auf die Arbeit dieses Skripts sehen.

  • Wir haben eine globale Reihe von „Clients“ mit dem Schlüsselwort „Declare“ deklariert, gefolgt von „-a.”
  • Der ReadArray () Funktion wurde definiert. In dieser Funktion haben wir einige lokale Variablen deklariert. Die lokale Variable "Array" ist leer, aber "I" und "J" wurden mit dem 0 -Wert definiert, der als Iteratoren verwendet werden soll.
  • Mit dem Lesemodus lesen wir den Text aus der Datei mit Iteratoren, um die Indizes zu erhöhen.
  • Die Zeile "Clients [$ ((i ++))]+= $ line;" wird verwendet, um die Textzeilen an die global definierte "Clients" -Array -Variable anzuhängen.
  • Danach springt „J ++“ im nächsten Index.
  • Die Variable „$ 1“ wird verwendet, um das Array zu speichern und zurückzugeben, das gerade aus dem „OpenVPN“ erstellt wurde.Textdatei protokollieren.
  • Außerhalb der Funktion wurde die Zeichenfolge als „$ String“ deklariert und einen Dateipfad als Wert erhalten.
  • Diese Zeichenfolge wurde an die übergeben ReadArray Funktion als Referenz zum Lesen von Text aus dieser Datei.
  • Danach wurde das Array „Clients“ gedruckt, und der gesamte Text in einer Zeile wurde angezeigt.
  • Jetzt werden wir eine Nachricht anzeigen, dass das Array nicht mehr leer ist.
  • Die „für“ -Schloop wurde verwendet, um den Inhalt des Array „Clients“ in den Array -Typ umzuwandeln und einen Index für den Inhalt mit der Anweisung „Echo“ $ i: $ clients [$ i] zu deklarieren.”
  • Schließlich haben wir eine Nachricht angezeigt und einige konvertierte Array -Werte getrennt als einzelne indizierte Position eines Arrays gedruckt.

Überprüfen Sie nun die Ausgabe dieses Bash -Skripts. Führen Sie den Befehl bash aus, um das Skript auszuführen.sh ”Datei. Wie Sie sehen können, druckt die erste Echo -Anweisung den gesamten Text aus dem „OpenVPN.Protokolldatei, die im Array „Clients“ als eine Zeile gespeichert wurde. In der zweiten Echo -Anweisung wird die String -Nachricht angezeigt. In der dritten Echo -Anweisung wird das Array „Clients“ in indizierter Form angezeigt, wie es gerade konvertiert wurde. Der vierte zeigt erneut eine Nachricht an. Der letzte zeigt den Inhalt des „Clients“ -Arrays einzeln an.

Abschluss

Dieser Artikel hat Ihnen gezeigt, wie Sie Arrays (insbesondere assoziative Arrays) mit dem integrierten Befehl „Declare“ mit zwei Beispielen in eine Funktion zurückgeben können. Ich hoffe, dass dieser Artikel Ihnen geholfen hat, dieses Thema besser zu verstehen.