2

在 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 如何实现?

4

2 回答 2

0

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

perl -pe 's/\$([[:alpha:]_]\w+)/$ENV{$1}/ge' file  
于 2012-12-20T21:14:11.603 回答
0

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

尝试这个:

while read line
do
  echo "$line"
done < <(eval echo "\"$(<abc)\"")
于 2012-12-20T17:50:09.963 回答