Ich versuche, das Ersetzen von Umgebungsvariablen durchzuführen envsubst
, möchte jedoch nur bestimmte Variablen ersetzen.
Aus den Dokumenten sollte ich in der Lage sein, envsubst
nur bestimmte Variablen zu ersetzen, aber ich bin nicht in der Lage, das zu tun.
Wenn ich zum Beispiel eine Datei habe, die Folgendes enthält:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
wie soll ich das ausführen envsubst
damit es nur den verweis auf ersetzt ${VAR_1}
?
shell
environment-variables
João Angelo
quelle
quelle
Per Manpage:
Wobei SHELL-FORMAT-Zeichenfolgen "Zeichenfolgen mit Verweisen auf Shell-Variablen in der Form
$variable
oder${variable}
[...] Die Variablennamen dürfen nur aus alphanumerischen Zeichen oder ASCII-Zeichen mit Unterstrich bestehen, nicht mit einer Ziffer beginnen und nicht leer sein; ignoriert. " .Man muss also die jeweiligen Variablennamen
envsubst
in einer Shell-Format-Zeichenfolge übergeben (offensichtlich müssen sie mit Escape-Zeichen versehen sein, um wörtlich an übergeben zu werdenenvsubst
). Beispiel:Eingabedatei zB
infile
:und einige Werte wie
dann rennen
oder
oder
Ausgänge
Oder, wenn Sie Backslash bevorzugen:
produziert
quelle
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
dann haben:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile