【问题标题】:awk:environmental variable substitution in a line after reading from file in another variableawk:从另一个变量中的文件读取后,一行中的环境变量替换
【发布时间】:2012-12-08 06:59:09
【问题描述】:

在 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 的值 这是如何实现的?

【问题讨论】:

  • 如何做到这一点的答案取决于你接下来要做什么。向我们展示更多您的脚本,以便我们了解您打算如何使用该行。

标签: unix awk


【解决方案1】:

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

试试这个:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 2016-10-20
      • 2017-03-06
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多