Подставить переменную в строку, прочитанную из файла - PullRequest
1 голос
/ 14 июня 2019

Я прочитал файл конфигурации, который имеет переменную ниже:

export BASE_DIR="\usr\usr1"

В том же скрипте я построчно читал файл и хотел заменить ${BASE_DIR} на \usr\usr1.

В сценарии:

while read line; do
echo $line 
done <file.txt

${BASE_DIR}\path1 должен быть напечатан как \usr\usr1\path1

Пробовал eval echo и $(( )).

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Вам необходимо установить переменную, когда вы читаете строку, содержащую назначение.Тогда вы можете заменить его позже.

#!/bin/bash
while read line; do
    if [[ $line =~ ^BASE_DIR= ]]
    then basedir=${line#BASE_DIR=}
    fi
    line=${line/'${BASE_DIR}'/$basedir}
    printf "%s\n" "$line"
done < file.txt > newfile.txt
0 голосов
/ 14 июня 2019

Может использовать sed, эта команда будет искать и заменять значение.Знак доллара является разделителем.

sed -ie 's$\${BASE_DIR}$\\usr\\usr1$1' hello.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...