Übergabe von Parametern an eine Bash-Funktion
Ich versuche zu suchen, wie man Parameter in einer Bash-Funktion übergeben, aber was kommt, ist immer, wie man Parameter von der Befehlszeile übergeben.
Ich würde gerne Parameter innerhalb meines Skripts übergeben. Ich habe es versucht:
myBackupFunction("..", "...", "xx")
function myBackupFunction($directory, $options, $rootPassword) {
...
}
Aber die Syntax ist nicht korrekt, wie kann ich einen Parameter an meine Funktion übergeben?
893
3
Es gibt zwei typische Möglichkeiten, eine Funktion zu deklarieren. Ich bevorzuge den zweiten Ansatz.
oder
Um eine Funktion mit Argumenten aufzurufen:
Die Funktion bezieht sich auf die übergebenen Argumente durch ihre Position (nicht durch ihren Namen), d.h. $1, $2 und so weiter. $0 ist der Name des Skripts selbst.
Beispiel:
Außerdem müssen Sie Ihre Funktion nach ihrer Deklaration aufrufen.
Ausgabe:
Referenz: Advanced Bash-Scripting Guide.
Die Kenntnis von höheren Programmiersprachen (C/C++/Java/PHP/Python/Perl ...) würde dem Laien suggerieren, dass Bash-Funktionen so funktionieren sollten wie in diesen anderen Sprachen. Stattdessen funktionieren Bash-Funktionen wie Shell-Befehle und erwarten, dass ihnen Argumente auf die gleiche Weise übergeben werden, wie man einem Shell-Befehl eine Option übergeben kann (ls -l). In der Tat werden Funktionsargumente in der Bash als Positionsparameter* behandelt (
$1, $2..$9, ${10}, ${11}
, und so weiter). Das ist keine Überraschung, wenn man bedenkt, wiegetopts
funktioniert. Klammern sind nicht erforderlich, um eine Funktion in der Bash aufzurufen.(Anmerkung: Ich arbeite zufällig gerade an Open Solaris.)
Lassen Sie die Parens und Kommas weg:
und die Funktion sollte wie folgt aussehen: