在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的一部分