Skicka parametrar till en Bash-funktion
Jag försöker söka efter hur man skickar parametrar i en Bash-funktion, men det som dyker upp är alltid hur man skickar parametrar från kommandoraden.
Jag skulle vilja skicka parametrar i mitt skript. Jag har försökt:
myBackupFunction("..", "...", "xx")
function myBackupFunction($directory, $options, $rootPassword) {
...
}
Men syntaxen är inte korrekt, hur kan jag skicka en parameter till min funktion?
893
3
Det finns två typiska sätt att deklarera en funktion. Jag föredrar det andra sättet.
eller
Anropa en funktion med argument:
Funktionen hänvisar till de överlämnade argumenten genom deras position (inte genom namnet), det vill säga $1, $2 och så vidare. $0 är namnet på själva skriptet.
Exempel:
Du måste också kalla din funktion efter att den har deklarerats.
Output:
Referens: Advanced Bash-Scripting Guide.
Kunskap om programmeringsspråk på hög nivå (C/C++/Java/PHP/Python/Perl ...) skulle för en lekman innebära att bash-funktioner borde fungera på samma sätt som i dessa andra språk. Istället fungerar bash-funktioner som skalkommandon och förväntar sig att argument skickas till dem på samma sätt som man kan skicka ett alternativ till ett skalkommando (ls -l). I själva verket behandlas funktionsargument i bash som positionsparametrar* (
$1, $2..$9, ${10}, ${11}
, och så vidare). Detta är ingen överraskning med tanke på hurgetopts
fungerar. Parenteser krävs inte för att anropa en funktion i bash.(Note: Jag råkar arbeta med Open Solaris för tillfället.)
Lämna bort parens och kommatecken:
och funktionen bör se ut så här: