我感兴趣的是是否有一个UNIX工具可以用环境变量的实际值替换$VAR
或${VAR}
(对于env中的所有现有变量,而不仅仅是一个变量)。此替换位于纯文本文件中,而不是 bash 脚本中;某种"穷人的模板引擎"。
我知道我能做到
(echo 'echo -n "'; sed -e "s/"/"'"'"/g" infile; echo '"') | sh -s >outfile
(事实上,我确实如此),但如果有一个众所周知的工具,我宁愿使用它而不是聪明的sh
技巧。
编辑:@glennjackman建议使用eval
,因此行更短且没有子外壳:
eval echo -n ""`sed -e 's/"/\\\"/g' infile`"" >outfile
这很短(虽然不是专用工具,但如果没有,那就足够了)。
一个带有eval
的示例
tmpl='Hello $x'
x=world
eval str="$tmpl"
echo $str # => Hello world
如果您的模板嵌入了双引号,这会变得混乱。