Ich habe eine tmp.txt
Datei mit zu exportierenden Variablen, zum Beispiel:
a=123
b="hello world"
c="one more variable"
Wie kann ich all diese Variablen mit dem export
Befehl exportieren , damit sie später von untergeordneten Prozessen verwendet werden können?
.env
cd
in ein Verzeichnis kopieren können.Antworten:
Gemessen an Ihrer anderen Frage möchten Sie die Variablennamen nicht hart codieren:
Probier es aus:
quelle
grep
, um Kommentare zu überspringen:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
set -a
bewirkt, dass ab jetzt definierte Variablen¹ automatisch exportiert werden. Es ist in jeder Bourne-ähnlichen Shell verfügbar..
ist der Standard- und Bourne-Name für densource
Befehl, daher bevorzuge ich ihn aus Gründen der Portabilität (source
kommt voncsh
und ist jetzt in den meisten modernen Bourne-ähnlichen Shells verfügbar, auchbash
wenn (manchmal mit etwas anderem Verhalten)).In POSIX-Shells können Sie es auch
set -o allexport
als beschreibendere Alternative zum Schreiben (set +o allexport
zum Deaktivieren) verwenden.¹
bash
Beachten Sie, dass dadurch auch alle deklarierten Funktionenallexport
, die aktiviert sind, in die Umgebung exportiert werden (daBASH_FUNC_myfunction%%
Umgebungsvariablen, die dann von allenbash
Shells importiert werden , in dieser Umgebung ausgeführt werden, auch wenn sie als ausgeführt werdensh
).quelle
Mach einfach:
quelle
set -a
wäre viel einfacher, aber das funktioniert tatsächlich.