Awk:从文件中读取另一个变量后,在一行中替换环境变量



在Unix中,我有一个文件的内容如下

cat abc
;file1_$HOME;file2_$HOME

我的shell脚本是TRY。内容:

#$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的值如何才能做到这一点?

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

试试这个:

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

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

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

最新更新