2

$VARまたは${VAR}(1つだけでなく、env内の既存のすべての変数)の出現を環境変数の実際の値に置き換えるUNIXツールがあるかどうかに興味があります。この置換は、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 に答える