linux + bash + 从数据文件导出参数到新文件

linux + bash + 从数据文件导出参数到新文件

我有一台 Linux 机器 red-hat 5.1,我问以下问题

我的目标是根据 data_file.txt 从 answer_file.txt 创建新的 output_file.txt 文件

正如我们在这里看到的,我首先运行 data_file.txt 并从文件导出所有参数,然后尝试将所有 answer_file.txt 打印到新文件 output_file.txt 中

所以我将从 data_file.txt 中获取带有新参数的文件但我没有成功 -:(

请指教如何将参数从 data_file.txt 导出到 answer_file.txt 然后使用正确的值创建新文件?

备注-我使用 bash,但我不想使用 sed 或 awk 来完成这项任务,也不想更改原始 data_file.txt 或 answer_file.txt 的内容(我需要使用 bash shell 的简单方法来完成这项工作)

 [root@test1a /var/tmp]# more data_file.txt 
 arg1=a
 arg2=b
 arg3=c


 [root@test1a /var/tmp]# more answer_file.txt
 param1=$arg1
 param2=$arg2
 param3=$arg3



 [root@test1a /var/tmp]#  . ./data_file.txt 
 [root@test1a /var/tmp]# export arg1 arg2 arg3
 [root@test1a /var/tmp]#  cat `  . ./answer_file.txt  `  >/var/tmp/output_file.txt
 -bash: ./answer_file.txt: line 4: unexpected EOF while looking for matching `''
 -bash: ./answer_file.txt: line 5: syntax error: unexpected end of file






 ( my target is to get: Example of expected results from output_file.txt )

    more answer_file.txt  
    param1=a  
    param2=b  
    param3=c

答案1

您需要eval在文件的每一行上运行。试试这个:

$ cat data_file.txt
arg1=a
arg2=b
arg3=c

$ cat answer_file.txt
param1=$arg1
param2=$arg2
param3=$arg3

$ . data_file.txt

$ eval "echo \"$(cat answer_file.txt)\""
param1=a
param2=b
param3=c

# alternative, shorter command
$ eval "echo \"$(<answer_file.txt)\""
param1=a
param2=b
param3=c

答案2

抱歉,我没有更充分地阐述这一点,我有点累了(社区,请随意编辑并介入)。希望这能帮助您开始所需的一切:

$ cat data.txt
arg1=a
arg2=b
arg3=c
export arg1 arg2 arg3
$ cat answer.txt
echo param1=$arg1
param2=$arg2
param3=$arg3
$ eval `cat data.txt`;eval `cat answer.txt`
param1=a param2=b param3=c

相关内容