Как получить имя переменной из файла, используя исходную команду в UNIX? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть файл с именем param1.txt, который содержит определенные переменные.У меня есть другой файл как source1.txt, который содержит заполнители.Я хочу заменить заполнители значениями переменных, которые я получаю из файла параметров.

Я в основном жестко запрограммировал скрипт, в котором имена переменных в файле parameter.txt известны заранее.Я хочу знать динамическое решение проблемы, когда имена переменных не будут известны заранее.Другими словами, есть ли способ узнать имена переменных в файле, используя команду source в UNIX?

Вот мой скрипт и файлы.

Скрипт:

#!/bin/bash
source /root/parameters/param1.txt
sed "s/{DB_NAME}/$DB_NAME/gI;
  s/{PLANT_NAME}/$PLANT_NAME/gI" \
  /root/sources/source1.txt >
  /root/parameters/Output.txt`

param1.txt:

PLANT_NAME=abc
DB_NAME=gef

source1.txt:

kdashkdhkasdkj {PLANT_NAME}
jhdbjhasdjdhas kashdkahdk asdkhakdshk
hfkahfkajdfk ljsadjalsdj {PLANT_NAME}
{DB_NAME}

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Не понимаю, почему вы пытаетесь получить исходный текст param1.txt.
Вы можете попробовать с этим awk:

awk '
  NR == FNR {
  a[$1] = $2
  next
}
{
  for ( i = 1 ; i <= NF ; i++ ) {
  b = $i
  gsub ( "^{|}$" , "" , b )
  if ( b in a )
    sub ( "{" b "}" , a[b] , $i )
 }
} 1' FS='=' param1.txt FS=" " source1.txt
0 голосов
/ 09 февраля 2019

Я не могу комментировать, так как у меня недостаточно очков.Но верно ли, что это то, что вы ищете:

Как ссылаться на файл для переменных с помощью Bash?

Ваша формулировка проблемы не очень яснамне.Возможно, вы можете упростить вашу проблему и желаемое состояние.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...