Um die VAR-Variable zuerst zu exportieren, ist der logischste und scheinbar funktionierende Weg, die Variable zu sourcen:
. ./export.bash
oder
source ./export.bash
Jetzt, wenn Sie es aus der Hauptschale ausgeben, funktioniert es:
echo $VAR
HELLO, VARIABLE
Jetzt setzen wir VAR zurück:
export VAR=""
echo $VAR
Jetzt werden wir ein Skript ausführen, um die Variable zu sourcen und dann zurückzusetzen:
./test-export.sh
HELLO, VARIABLE
--
.
Der Code: Datei test-export.sh
#!/bin/bash
# Umgebungsvariable sourcen
source ./export.bash
# die Variable im Testskript ausgeben
echo $VAR
# die Variable zurücksetzen
unset VAR
# ein paar gestrichelte Linien ausgeben
echo "---"
# jetzt wird VAR leer zurückgegeben
echo $VAR
Hier ist eine Möglichkeit:
Bitte beachten: Die Exports sind auf das Skript beschränkt, das die Exports in Ihrer Hauptkonsole ausführt - daher würde ich sie für einen cron-Job wie unten angegeben hinzufügen... bezüglich des Befehlsteils nach wie vor fragwürdig: so führen Sie es von Ihrer Shell aus:
Im Befehlsfenster (solange die export.bash Datei mehrere Echo-Werte hat)
IFS=$'\n'; for eintrag in $(./export.bash); do export $eintrag; done; ./v1.sh
HELLO THERE
HI THERE
Datei cat v1.sh
#!/bin/bash
echo $VAR
echo $VAR1
Jetzt, solange dies für Ihre Verwendung ist, könnten Sie die Variablen jederzeit für Ihre Skripte verfügbar machen, indem Sie ein Bash-Alias wie folgt verwenden:
myvars ./v1.sh
HELLO THERE
HI THERE
echo $VAR
.
Fügen Sie dies Ihrer [.bashrc-Datei](https://de.wikipedia.org/wiki/Bash(Unixshell)#Installation) hinzu:
function myvars() {
IFS=$'\n';
for eintrag in $(./export.bash); do export $eintrag; done;
"$@";
for eintrag in $(./export.bash); do variable=$(echo $eintrag|awk -F"=" '{print $1}'); unset $variable;
done
}
Quelle Ihre .bashrc-Datei und Sie können jederzeit wie oben beschrieben vorgehen...
Wie dem auch sei, zurück zu dem Rest davon...
Das hat es global verfügbar gemacht und dann das Skript ausgeführt...
Einfach ausgeben und exportieren!
Datei export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
Jetzt innerhalb des Skripts oder Ihrer Konsole ausführen:
export "$(./export.bash)"
Versuchen Sie es:
echo $VAR
HELLO THERE
Mehrere Werte, solange Sie wissen, was Sie in einem anderen Skript erwarten, können sie mit der obigen Methode verwendet werden:
Datei export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
echo "VAR1=HI THERE"
Datei test-export.sh
#!/bin/bash
IFS=$'\n'
for eintrag in $(./export.bash); do
export $eintrag
done
echo "Runde 1"
echo $VAR
echo $VAR1
for eintrag in $(./export.bash); do
variable=$(echo $eintrag|awk -F"=" '{print $1}');
unset $variable
done
echo "Runde 2"
echo $VAR
echo $VAR1
Jetzt die Ergebnisse
./test-export.sh
Runde 1
HELLO THERE
HI THERE
Runde 2
.
Und das endgültige Update zum automatischen Zuweisen, das Lesen der VARIABELN:
./test-export.sh
Runde 0 - Exportieren und Variablennamen finden -
Aktuelle Variable auf die exportierte Variable setzen und ihren Wert ausgeben
$VAR hat den Wert HELLO THERE
$VAR1 hat den Wert HI THERE
Runde 1 - wir wissen, was exportiert wurde und wir werden bekannte Variablen ausgeben
HELLO THERE
HI THERE
Runde 2 - Wir werden nur die Variablennamen zurückgeben und sie zurücksetzen
Runde 3 - Jetzt erhalten wir nichts zurück
Das Skript:
Datei test-export.sh
#!/bin/bash
IFS=$'\n'
echo "Runde 0 - Exportieren und Variablennamen finden - "
echo "Aktuelle Variable auf die exportierte Variable setzen und ihren Wert ausgeben"
for eintrag in $(./export.bash); do
variable=$(echo $eintrag|awk -F"=" '{print $1}');
export $eintrag
eval aktuelle_variable=\$$variable
echo "\$$variable hat den Wert $aktuelle_variable"
done
echo "Runde 1 - wir wissen, was exportiert wurde und wir werden bekannte Variablen ausgeben"
echo $VAR
echo $VAR1
echo "Runde 2 - Wir werden nur die Variablennamen zurückgeben und sie zurücksetzen "
for eintrag in $(./export.bash); do
variable=$(echo $eintrag|awk -F"=" '{print $1}');
unset $variable
done
echo "Runde 3 - Jetzt erhalten wir nichts zurück"
echo $VAR
echo $VAR1