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

Unix awk:从另一个变量的文件中读取后,在一行中替换环境变量,unix,awk,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 #$HOME被导出并在此处具有值 回声$HOME 读行时 做 回音$线 完成

在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
#$HOME被导出并在此处具有值
回声$HOME
读行时
做
回音$线
完成
此处
echo$行打印-;文件1$HOME;文件2_$HOME
但不替换
$HOME

如何实现这一点?

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

试试这个:

while read line
do
  echo "$line"
done < <(eval echo "\"$(<abc)\"")
读取行时
做
回音“$line”

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

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

如何做到这一点的答案取决于你下一步要做什么。向我们展示更多的脚本,这样我们就可以看到您计划如何使用该行。