替换属性文件中的环境变量

在Linux中,假设我有以下文件(例如conf.properties):

主机URL=http://$HOSTNAME
STD_CONFIG=http://$HOSTNAME/CONFIG
USER_CONFIG=http://$HOSTNAME/CONFIG/$unconfigured

我想创建另一个替换了所有环境变量的文件…例如。假设环境变量$HOSTNAME为’myhost’,且未设置$unconfigured,则脚本应生成以下输出:

主机URL=http://myhost
标准配置=http://myhost/config
用户配置=http://myhost/config/

我原以为这可以用简单的一行代码和某种sed/awk魔术来完成,但我不是专家,我的搜索一直在进行中,所以感谢您的帮助

编辑:

我应该提到,该文件实际上可以是任何格式的文本文件,例如xml。我只想用环境中当前设置的内容替换任何看起来像env变量的内容

这就是envsubst的用途

回显“你好$USER”
你好$USER
echo“Hello$USER”| envsubst
你好malvineous

不过,您可能会更像这样使用它:

envsubst<input.txt>output.txt

envsubst似乎是GNU gettext的一部分

发表评论