it-swarm.com.de

So fügen Sie eine Datei in ein Bash-Shell-Skript ein

Gibt es eine Möglichkeit, ein anderes Shell-Skript in ein Shell-Skript aufzunehmen, um auf seine Funktionen zugreifen zu können?

Wie in PHP können Sie die include-Direktive mit anderen Dateien PHP verwenden, um die darin enthaltenen Funktionen auszuführen, indem Sie einfach den Funktionsnamen aufrufen.

80
Mechaflash

Einfach in dein Skript einfügen:

source FILE

Oder

. FILE

das ist gleich.

$ LANG=C help source
source: source filename [arguments]
Execute commands from a file in the current Shell.

Read and execute commands from FILENAME in the current Shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
148
Gilles Quenot

Ja, benutze source oder die Kurzform, die nur . ist

. other_script.sh
29
Paulpro

Die obigen Antworten sind korrekt, aber wenn Sie das Skript in einem anderen Ordner ausführen, wird es Probleme geben.

Zum Beispiel befinden sich a.sh und b.sh im selben Ordner, A include b mit . ./b.sh zum Einschließen.

Wenn Sie ein Skript außerhalb des Ordners ausführen, beispielsweise mit xx/xx/xx/a.sh, wird die Datei b.sh nicht gefunden: ./b.sh: No such file or directory

Ich benutze 

. $(dirname "$0")/b.sh
21
Fancyoung

In meiner Situation musste ich Folgendes tun, um color.sh Aus demselben Verzeichnis in init.sh Aufzunehmen.

. ./color.sh

Nicht sicher, warum ./ Und nicht color.sh Direkt. Der Inhalt von color.sh Ist wie folgt.

RED=`tput setaf 1`
GREEN=`tput setaf 2`
BLUE=`tput setaf 4`
BOLD=`tput bold`
RESET=`tput sgr0`

Bei Verwendung von File color.sh Tritt kein Fehler auf, die Farbe wird jedoch nicht angezeigt. Ich habe dies in Ubuntu 18.04 Getestet und die Bash -Version lautet:

GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)

0
Raf