在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
的价值
如何实现这一目标?
答案 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