Ich möchte eine Variable aus einem anderen Skript abrufen, wie in dieser Frage zum Stapelüberlauf gezeigt:
So verweisen Sie auf eine Datei für Variablen in einem Bash-Skript
Die Antwort verwendet jedoch den source
Befehl, der nur in verfügbar ist bash
. Ich möchte dies auf tragbare Weise tun.
Ich habe es auch versucht
Asche
export VAR="foo"
echo "executing a"
b.sh.
#!/bin/sh
./a.sh
echo $VAR
Aber das funktioniert natürlich auch nicht. Wie macht man das?
command-line
bash
scripts
environment-variables
Eero Aaltonen
quelle
quelle
./a.sh
und. ./a.sh
. Möchtest du den Unterschied erklären?.
odersource
) wertet das Skript in Ihrer aktuellen Shell aus. Wenn Sie das Skript zuerst ausführen, wird eine Unterschale erzeugt, und alle Umgebungsänderungen in der Unterschale gehen verloren, wenn die Unterschale beendet wird. Ein untergeordneter Prozess kann die Umgebung seiner übergeordneten Datei nicht ändern.help
Funktion, um auf das Handbuch für einen bestimmten Befehl zuzugreifen - siehehelp .
Umgebungsvariablen werden nur von Eltern zu Kindern vererbt und nicht umgekehrt. In Ihrem Beispiel ruft b.sh a.sh auf, sodass a als untergeordnetes Element von b ausgeführt wird. Wenn a.sh var exportiert, wird es von b.sh nicht gesehen. Ändern Sie die Logik so, dass der übergeordnete Prozess die Variable exportiert, z
Asche:
b.sh:
quelle
sharedDefs.sh
zwei separate Ziele, die davon abhängen. Daher muss ich die Abhängigkeiten auf diese Weise haben.