У меня есть некоторый файл конфигурации. Файл конфигурации содержит строку: LocalPath /media/$USER
Я прочитал файл конфигурации в сценарии удара:
while read var value
do
export "$var"="$value"
done < my-conf-file.conf
Так, я могу использовать $LocalPath
в сценарии удара. Это равняется: /media/$USER
, но я хочу иметь: /media/user1
(user1 мой пользователь).
Как я могу реализовать его?
read
не разворачивает переменные из Вашего файла конфигурации.
Можно проверить что:
$ read username
$USER
$ echo $username
$USER
Этот ответ на Stackoverflow дает решение.
Измените свой сценарий на это, чтобы заставить его развернуть переменные:
while read var value
do
export "$var"="$value"
done < <(envsubst < my-conf-file.conf)
Как Kyle Strand, предложенный в комментарии, самое легкое решение состоит в том, чтобы сделать файл конфигурации сценарием Bash:
export LocalPath=/media/$USER
Затем получите его из своего основного сценария:
source my-conf-file.sh
Или если Вы имеете набор переменных и не хотите вводить export
для всех сделайте файл конфигурации как это:
set -a
LocalPath=/media/$USER
set +a