Übergeben Sie ein Array an eine Funktion in Bash
- Funktionen im Bash-Skript
- Rufen Sie eine Funktion in Bash auf
- Funktionsargumente 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:
- 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.
- 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:
-
Eine Möglichkeit, eine Funktion zu deklarieren, besteht darin, den Namen der Funktion nur so zu verwenden:
<function_name> () { <set of commands> }
-
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:
- Unabhängig davon, ob Sie Bash-Skripte oder das Terminal direkt verwenden, müssen in einer einzelnen Zeile geschriebene Befehle mit einem Semikolon (
;
) enden. - Klammern sind optional, wenn das reservierte Wort
Funktion
hinzugefügt wird. - 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. - 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:
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: