Gibt es eine Möglichkeit, ein anderes Shell-Skript in ein Shell-Skript aufzunehmen, um auf dessen Funktionen zugreifen zu können?
Wie in PHP können Sie die include
Direktive mit anderen PHP-Dateien verwenden, um die darin enthaltenen Funktionen einfach durch Aufrufen des Funktionsnamens auszuführen.
source
Befehl bezieht, stellt sich die Frage, wie der Speicherort einersource
Datei ermittelt werden kann.Antworten:
Einfach in Ihr Skript einfügen:
Oder
quelle
C
Sprache. Hier führt die Quelle das untergeordnete Skript im Hauptskript aus. Was ist, wenn ich nur eine bestimmte Funktion aus dem untergeordneten Skript aufrufen möchte?. script.sh
mit./script.sh
. Ich habe Stunden verloren, um herauszufinden, was los istDie obigen Antworten sind korrekt, aber wenn das Skript in einem anderen Ordner ausgeführt wird, tritt ein Problem auf.
Zum Beispiel befinden sich die
a.sh
undb.sh
in demselben Ordner, a include b mit. ./b.sh
to include.Wenn Sie ein Skript aus dem Ordner ausführen, z. B. mit
xx/xx/xx/a.sh
, wird die Dateib.sh
nicht gefunden :./b.sh: No such file or directory
.ich benutze
quelle
Ja, verwenden Sie die Quelle oder die Kurzform, die nur lautet
.
:quelle
.
Versionsh
genauso gut funktioniert wie Bash. Die "Quelle" funktioniert nur in Bash.In meiner Situation musste ich Folgendes tun , um
color.sh
aus demselben Verzeichnis aufzunehmeninit.sh
.Nicht sicher warum
./
und nichtcolor.sh
direkt. Der Inhalt voncolor.sh
ist wie folgt.Die Verwendung von
File color.sh
ist kein Fehler, aber die Farbe wird nicht angezeigt. Ich habe dies getestetUbuntu 18.04
und dieBash
Version ist:GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)
quelle
init.sh
befindet (sie stimmen überein, wenn Sie sie überhaupt gestartet haben./init.sh
).