2012-12-20 72 views
2

从文件中读取在Unix中后,我有像AWK:在一条线上的环境变量替换在另一个变量

cat abc 
;file1_$HOME;file2_$HOME 

我的外壳脚本具有内容的文件是具有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的值 这是如何实现的?

+0

如何做到这一点的答案取决于你要什么做下一步。向我们展示更多的脚本,以便我们看到你打算如何使用该行。 –

回答

0

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

试试这个:

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

你可以使用Perl找到变量名,并从环境替代的价值:

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