У меня Linux машина red-hat 5.1, и я задаю следующий вопрос
моя цель - создать новый файл output_file.txt из answer_file.txt в соответствии с data_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 для выполнения задания )
[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
Вам нужно бежать 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
Извините, я не изложил это более полно, я немного устал (сообщество, не стесняйтесь редактировать это и вмешиваться). Надеюсь, это поможет вам начать с того, что вам нужно:
$ 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