Unix awk:从另一个变量的文件中读取后,在一行中替换环境变量
在Unix中,我有一个包含如下内容的文件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 读行时 做 回音$线 完成
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
如何做到这一点的答案取决于你下一步要做什么。向我们展示更多的脚本,这样我们就可以看到您计划如何使用该行。