用于替换环境变量的命令行工具

时间:2012-11-14 15:31:21

标签: bash environment-variables sh substitution

我感兴趣的是,如果有一个UNIX工具用环境变量的实际值替换$VAR${VAR}(对于env中的所有现有变量,而不仅仅是一个)的出现。此替换是在纯文本文件中,而不是bash脚本;一种“穷人的模板引擎”。

我知道我能做到

(echo 'echo -n "'; sed -e "s/\"/\"'\"'\"/g" infile; echo '"') | sh -s >outfile

(事实上,我确实如此),但如果有一个众所周知的工具,我宁愿使用它而不是聪明的sh技巧。

编辑:@glennjackman建议使用eval,因此该行更短且没有子shell:

eval echo -n \""`sed -e 's/"/\\\\\\\"/g' infile`"\" >outfile

这很短(虽然不是专用工具,但如果没有,则足够好)。

1 个答案:

答案 0 :(得分:1)

eval

的示例
tmpl='Hello $x'
x=world
eval str=\"$tmpl\"
echo $str   # => Hello world

如果您的模板嵌入了双引号,则会变得混乱。