Считайте строку с переменной $USER как текст и разрешите его

У меня есть некоторый файл конфигурации. Файл конфигурации содержит строку: LocalPath /media/$USER

Я прочитал файл конфигурации в сценарии удара:

while read var value
do
    export "$var"="$value"
done < my-conf-file.conf

Так, я могу использовать $LocalPath в сценарии удара. Это равняется: /media/$USER, но я хочу иметь: /media/user1 (user1 мой пользователь).

Как я могу реализовать его?

3
задан 8 November 2017 в 14:52

2 ответа

read не разворачивает переменные из Вашего файла конфигурации.

Можно проверить что:

$ read username
$USER
$ echo $username
$USER

Этот ответ на Stackoverflow дает решение.
Измените свой сценарий на это, чтобы заставить его развернуть переменные:

while read var value
do
    export "$var"="$value"
done < <(envsubst < my-conf-file.conf)
9
ответ дан 1 December 2019 в 13:08

Как Kyle Strand, предложенный в комментарии, самое легкое решение состоит в том, чтобы сделать файл конфигурации сценарием Bash:

export LocalPath=/media/$USER

Затем получите его из своего основного сценария:

source my-conf-file.sh

Или если Вы имеете набор переменных и не хотите вводить export для всех сделайте файл конфигурации как это:

set -a
LocalPath=/media/$USER
set +a
1
ответ дан 1 December 2019 в 13:08

Другие вопросы по тегам:

Похожие вопросы: