Existuje snadný způsob, jak nahradit/vyhodnotit proměnné prostředí v souboru? Řekněme, že mám soubor config.xml
který obsahuje:
<property>
<name>instanceId</name>
<value>$INSTANCE_ID</value>
</property>
<property>
<name>rootPath</name>
<value>/services/$SERVICE_NAME</value>
</property>
…atd. Chci nahradit $INSTANCE_ID
v souboru s hodnotou INSTANCE_ID
proměnná prostředí, $SERVICE_NAME
s hodnotou SERVICE_NAME
env var. Nebudu a priori vědět, které proměnné prostředí jsou potřeba (nebo spíše nechci aktualizovat skript, pokud někdo přidá novou proměnnou prostředí do konfiguračního souboru). Díky!
Přijatá odpověď:
Můžete použít envsubst
(součást gnu gettext
):
envsubst < infile
nahradí proměnné prostředí ve vašem souboru jejich odpovídajícími hodnotami. Názvy proměnných se musí skládat výhradně z alfanumerických znaků nebo znaků ASCII, nesmí začínat číslicí a nesmí být prázdné; jinak je takový odkaz na proměnnou ignorován.
Chcete-li nahradit pouze určité proměnné prostředí, přečtěte si tuto otázku.