2

如果有一个 UNIX 工具可以用环境变量的实际值替换$VARor ${VAR}(对于环境中的所有现有变量,而不仅仅是一个),我很感兴趣。此替换位于纯文本文件中,而不是 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

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

4

1 回答 1

1

一个例子eval

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

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

于 2012-11-14T21:54:39.817 回答