Назад | Перейти на главную страницу

linux + bash + экспорт параметров в новый файл из файла данных

У меня 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