Wenn das Skript nur die Funktionen definiert und sonst nichts tut, können Sie das Skript zunächst im Kontext der aktuellen Shell mit dem source
ausführen oder .
Befehl und rufen Sie dann einfach die Funktion auf. Siehe help source
für weitere Informationen.
Der folgende Befehl registriert die Funktion zuerst im Kontext und ruft sie dann auf:
. ./myScript.sh && function_name
Nun, während die anderen Antworten richtig sind - Sie können sicherlich noch etwas anderes tun:Wenn Sie Zugriff auf das Bash-Skript haben, können Sie es ändern und einfach den speziellen Parameter "[email protected]"
ans Ende setzen - die zu den Argumenten der von Ihnen angegebenen Befehlszeile erweitert wird, und da es "allein" ist, wird die Shell versuchen, sie wörtlich aufzurufen; und hier könnten Sie den Funktionsnamen als erstes Argument angeben. Beispiel:
$ cat test.sh
testA() {
echo "TEST A $1";
}
testB() {
echo "TEST B $2";
}
"[email protected]"
$ bash test.sh
$ bash test.sh testA
TEST A
$ bash test.sh testA arg1 arg2
TEST A arg1
$ bash test.sh testB arg1 arg2
TEST B arg2
Für polish können Sie zuerst überprüfen, ob der Befehl existiert und eine Funktion ist:
# Check if the function exists (bash specific)
if declare -f "$1" > /dev/null
then
# call arguments verbatim
"[email protected]"
else
# Show a helpful error
echo "'$1' is not a known function name" >&2
exit 1
fi