Wie im Text angegeben, müssen Sie nur wie in einem normalen Shell-Befehl auf die Variablen verweisen (z. B. durch $VARNAME
oder ${VARNAME}
). Sie müssen jedoch vorher sicherstellen, dass die Shell sie nicht erweitert.
Hier einige Beispiele, um dies zu veranschaulichen (vorausgesetzt export FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
Wie Sie sehen, wurde $ FOO2 durch "" ersetzt, da es nicht definiert wurde. Jetzt können wir diesen Ersatz auf nur $ FOO beschränken, indem wir:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
Verwenden ""
anstelle von ''
würde zu einer Substitution führen, bevor dies gewünscht wird:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Dies entspricht dem effektiven Aufruf envsubst "BAR"
, der keine Variablen erkennt, sodass keine ersetzt werden.)
Wie auf der man
-page bereits erwähnt, werden alle Variablen, auf die verwiesen SHELL-FORMAT
wird, ersetzt, sodass wir dies sogar tun können:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Wie Sie sehen können, SHELL-FORMAT
ist das recht flexibel.
Schließlich --variables
können Sie mit dem Parameter auswerten, welche Variablen zum Ersetzen durch die SHELL-FORMAT
folgenden Variablen ausgewählt werden :
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
Im obigen Beispiel der vorzeitigen Substitution hätte dies den Fehler gezeigt:
$ envsubst --variables "$FOO"
(empty string returned)
man
Verarbeitet, envsubst
wie auf der Seite angegeben, keine Standardeingabe, wenn --variables
vorhanden.
Die Aussprache ist etwas verwirrend. Um den Hilfetext genauer zu formulieren:
Um Ihre Frage explizit zu beantworten: Stellen Sie dem Variablennamen das Präfix voran
$
.quelle