感谢Elias Probst's answer here,我使用它来替换文本文件中的环境变量:
TARGET_FILE=/etc/apache2/apache2.conf;
for VARNAME in $(grep -P -o -e '\$\{\S+\}' ${TARGET_FILE} | sed -e 's|^\${||g' -e 's|}$||g' | sort -u);
do sed -i "s|\${$(echo $VARNAME)}|${!VARNAME}|g" ${TARGET_FILE};
done
我喜欢这样的东西,我可以别名并将模板化文件传输到并且能够将替换的文件写入标准输出。我可以想象如何使用临时文件执行此操作(将模板复制到临时文件,运行sed并将其替换到适当位置,将临时文件删除),但我更愿意避免这种情况。
任何提示?谢谢!