我有一台 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