Übergeben Sie ein Array an eine Funktion in Bash

Naila Saad Siddiqui 15 Februar 2024
  1. Funktionen im Bash-Skript
  2. Rufen Sie eine Funktion in Bash auf
  3. Funktionsargumente in Bash
  4. Übergeben Sie ein Array an eine Funktion in Bash
Übergeben Sie ein Array an eine Funktion in Bash

In diesem kleinen Programmier-Tutorial geht es darum, Funktionen in Bash-Skripten zu verwenden und ihnen Arrays zu übergeben. Bevor wir uns dem eigentlichen Thema zuwenden, werden wir das Bash-Scripting kurz vorstellen.

Eine Bash-Skriptdatei enthält eine Reihe von Bash-Befehlen. Diese Befehle sind eine Kombination aus denen, die wir häufig in die Befehlszeile eingeben (wie ls oder cp) und denen, die wir in der Befehlszeile eingeben könnten.

Jeder Befehl, der in der Befehlszeile eingegeben und ausgeführt werden kann, führt die gleiche Aktion aus, wenn er in einer Skriptdatei enthalten ist und ausgeführt wird.

Funktionen im Bash-Skript

In Shell-Skripten werden wiederverwendbare Codeblöcke mithilfe von Bash-Funktionen gruppiert. Die meisten Programmiersprachen unterstützen diese Funktion, die auch mit anderen Namen wie Prozeduren, Methoden oder Unterroutinen bezeichnet wird.

Eine Methode, wiederverwendbare Codeabschnitte unter einem Namen zu speichern, wird als Bash-Funktion bezeichnet. Die Verwendung von Funktionen beim Schreiben von Bash-Skripten hat zwei Vorteile:

  1. Das direkte Einlesen einer Funktion in den Speicher der Shell ermöglicht es, sie für eine spätere Verwendung zu speichern. Heutige Computer haben viel Arbeitsspeicher, daher ist die Verwendung von Funktionen schneller als das wiederholte Schreiben des gleichen Codes.
  2. Lange Shell-Skripte können mit Hilfe von Funktionen in wiederverwendbare, modulare Codeblöcke zerlegt werden. Die Chunks sind einfacher zu erstellen und zu verwalten.

Deklarieren Sie eine Funktion in Bash

Es gibt zwei Möglichkeiten, eine Funktion in Bash zu deklarieren:

  1. Eine Möglichkeit, eine Funktion zu deklarieren, besteht darin, den Namen der Funktion nur so zu verwenden:

    <function_name> () {
    		<set of commands>
    }
    
  2. Eine andere Möglichkeit ist die Verwendung des Schlüsselworts Funktion wie folgt:

    function <function_name> {
    		< set of commands>
    }
    

Für beide Deklarationsarten können wir auch eine einzeilige Deklaration wie diese verwenden:

function <function_name> { <set of commands>; }

Bei der Verwendung von Funktionen müssen Sie folgende Fakten beachten:

  1. Unabhängig davon, ob Sie Bash-Skripte oder das Terminal direkt verwenden, müssen in einer einzelnen Zeile geschriebene Befehle mit einem Semikolon (;) enden.
  2. Klammern sind optional, wenn das reservierte Wort Funktion hinzugefügt wird.
  3. Der Körper der Funktion umfasst die Befehle, die zwischen geschweiften Klammern oder stehen. Im Rumpf sind beliebig viele Deklarationen, Variablen, Schleifen oder bedingte Anweisungen erlaubt.
  4. Versuchen Sie, aussagekräftige Funktionsnamen zu vergeben. Beschreibende Namen sind hilfreich, wenn sich andere Entwickler den Code ansehen, obwohl sie beim Testen von Funktionen und Befehlen nicht erforderlich sind.

Rufen Sie eine Funktion in Bash auf

Um eine Funktion aufzurufen, verwenden wir ihren Namen. Stellen Sie sicher, dass die Funktion deklariert ist, bevor sie aufgerufen wird.

Schauen wir uns den folgenden Code an:

#!/bin/Bash
func1 () {
        echo Hello from function
        echo Good Bye!
}
func1

Dieser Code gibt die folgende Ausgabe aus:

Ausgabe einer Funktion in Bash

Funktionsargumente in Bash

Die Parameter sollten nach dem Funktionsaufruf hinzugefügt und durch Leerzeichen getrennt werden, wenn Sie Argumente an eine Funktion übergeben möchten. Das Arbeiten mit Bash-Funktionsargumenten hat mehrere Optionen, die in der folgenden Tabelle aufgeführt sind.

Streit Zweck
$0 Wenn eine Funktion im Terminal definiert wird, speichert sie ihren Namen. Wenn in einem Bash-Skript angegeben, gibt $0 den Namen und Speicherort des Skripts aus.
$1, $2 usw. Dies entspricht der Position des Arguments hinter dem Funktionsnamen.
$# Dies sagt die Zählung der Gesamtzahl aus. der übergebenen Argumente.
$@ und $* Dies speichert den Array- oder Listentyp der übergebenen Argumente.
"$@" Es zerlegt die übergebene Liste in separate Argumente, zum Beispiel "$1", "$2" usw.

Übergeben Sie ein Array an eine Funktion in Bash

Betrachten Sie ein Beispiel unten, in dem wir eine Array-Liste an die Funktion übergeben und die Funktion sie in separate Variablen aufteilt und sie auf dem Bildschirm ausgibt.

#!/bin/Bash
function printArray() {
   a=("$@")
   for b in "${a[@]}";
      do
          echo "$b"
      done
}
array=("first" "second" "third")
printArray "${array[@]}

Beachten Sie, dass wir die Argumente beim Aufruf der Funktion als in Klammern eingeschlossene Liste übergeben haben. Dadurch werden sie zu einem Array und die Funktion speichert sie in $@.

Wir haben dieses Array dann in einer Schleife gedruckt.

Ausgang:

Ausgabe der Array-Passing-Funktion

Verwandter Artikel - Bash Function

Verwandter Artikel - Bash Array