GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich eine Funktion von einem Skript in der Befehlszeile ausführen?

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

Linux
  1. Wie wird von der Befehlszeile aus automatisch gemountet?

  2. Wie kann ich Perl-One-Liner-Befehlszeilenskripts ordnungsgemäß ausführen?

  3. Wie installiere ich ein Skript, das überall von der Befehlszeile aus ausgeführt werden kann?

  4. Wie kann ich mein Bash-Skript auf älteren Bash-Versionen testen?

  5. matlab Skript von der Linux-Befehlszeile ausführen

So führen Sie MySQL/MariaDB-Abfragen direkt von der Linux-Befehlszeile aus

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

Wie kann ich ein Verzeichnis vom Befehl ls ausschließen

Wie kann ich einen Befehl nach dem Booten ausführen?

Wie kann ich von der Befehlszeile aus in dmesg schreiben?

Wie erhalte ich meine IP-Adresse über die Befehlszeile?