awk:从另一个变量中读取文件后的一行中的环境变量替换

时间:2012-12-20 17:35:04

标签: unix awk

在Unix中,我有一个包含

等内容的文件
cat abc
;file1_$HOME;file2_$HOME

我的shell脚本是TRY.ksh,内容为:

#$HOME is exported and has a value here
echo $HOME 
while read line
do
echo $line
done < abc

此处echo $line prints- ;file1_$HOME;file2_$HOME 但不能取代$HOME的价值 如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您需要使用eval来扩展文件中的变量。

试试这个:

while read line
do
  echo "$line"
done < <(eval echo "\"$(<abc)\"")

答案 1 :(得分:0)

您可以使用Perl查找变量名称并从环境中替换它们的值:

perl -pe 's/\$([[:alpha:]_]\w+)/$ENV{$1}/ge' file