Um die VAR-Variable zuerst zu exportieren, ist es am logischsten und sinnvollsten, die Variable als Quelle zu verwenden:
. ./export.bash
oder
source ./export.bash
Jetzt funktioniert es beim Echo von der Haupt-Shell
echo $VAR
HELLO, VARABLE
Wir werden jetzt VAR zurücksetzen
export VAR=""
echo $VAR
Jetzt führen wir ein Skript aus, um die Variable zu beschaffen, und deaktivieren sie dann:
./test-export.sh
HELLO, VARABLE
--
.
der Code: cat test-export.sh
#!/bin/bash
# Source env variable
source ./export.bash
# echo out the variable in test script
echo $VAR
# unset the variable
unset VAR
# echo a few dotted lines
echo "---"
# now return VAR which is blank
echo $VAR
Hier ist ein Weg
BITTE BEACHTEN SIE: Die Exporte beschränken sich auf das Skript, das die Exporte in Ihrer Hauptkonsole ausführt. Soweit es sich um einen Cron-Job handelt, würde ich ihn wie die Konsole wie unten hinzufügen ... für den Befehlsteil noch fraglich: So würden Sie vorgehen renn von deiner Shell herein:
An Ihrer Eingabeaufforderung (solange die Datei export.bash mehrere Echowerte enthält)
IFS=$'\n'; for entries in $(./export.bash); do export $entries; done; ./v1.sh
HELLO THERE
HI THERE
Katze v1.sh.
#!/bin/bash
echo $VAR
echo $VAR1
Solange dies für Ihre Verwendung bestimmt ist, können Sie die Variablen jederzeit für Ihre Skripte verfügbar machen, indem Sie einen Bash-Alias wie den folgenden ausführen:
myvars ./v1.sh
HELLO THERE
HI THERE
echo $VAR
.
füge dies zu deiner .bashrc hinzu
function myvars() {
IFS=$'\n';
for entries in $(./export.bash); do export $entries; done;
"$@";
for entries in $(./export.bash); do variable=$(echo $entries|awk -F"=" '{print $1}'); unset $variable;
done
}
Quelle Ihre bashrc-Datei und Sie können wie oben jederzeit tun ...
Wie auch immer, zurück zum Rest.
Dies hat es global verfügbar gemacht und dann das Skript ausgeführt.
Echo es einfach aus und starte den Export für das Echo!
cat export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
Jetzt im Skript oder auf Ihrer Konsole ausführen:
export "$(./export.bash)"
Versuchen:
echo $VAR
HELLO THERE
Mehrere Werte, solange Sie mit der obigen Methode wissen, was Sie in einem anderen Skript erwarten:
cat export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
echo "VAR1=HI THERE"
cat test-export.sh
#!/bin/bash
IFS=$'\n'
for entries in $(./export.bash); do
export $entries
done
echo "round 1"
echo $VAR
echo $VAR1
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
unset $variable
done
echo "round 2"
echo $VAR
echo $VAR1
Nun die Ergebnisse
./test-export.sh
round 1
HELLO THERE
HI THERE
round 2
.
und das letzte endgültige Update für die automatische Zuweisung lesen Sie die VARIABLEN:
./test-export.sh
Round 0 - Export out then find variable name -
Set current variable to the variable exported then echo its value
$VAR has value of HELLO THERE
$VAR1 has value of HI THERE
round 1 - we know what was exported and we will echo out known variables
HELLO THERE
HI THERE
Round 2 - We will just return the variable names and unset them
round 3 - Now we get nothing back
Das Skript: cat test-export.sh
#!/bin/bash
IFS=$'\n'
echo "Round 0 - Export out then find variable name - "
echo "Set current variable to the variable exported then echo its value"
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
export $entries
eval current_variable=\$$variable
echo "\$$variable has value of $current_variable"
done
echo "round 1 - we know what was exported and we will echo out known variables"
echo $VAR
echo $VAR1
echo "Round 2 - We will just return the variable names and unset them "
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
unset $variable
done
echo "round 3 - Now we get nothing back"
echo $VAR
echo $VAR1