Я создал утилиту, которая должна быть выполнена во всей системе без любой ошибки путем создания необходимой среды. Когда когда-либо я выполню следующую команду, она примет значение пути из файла конфигурации, и это должно присвоить то значение в переменную BASE_DIR
export BASE_DIR=`cat <config file path> | grep BASE_DIR | head -1 | cut -d = -f 2`
Следующее является содержанием файла конфигурации:
BASE_DIR=$HOME/flshrc
когда я выполняю первый код, он принимает значение как $HOME/flshrc
вместо фактического домашнего пути, например /home/user1/flshrc
Как не рассмотреть захваченное значение как строку и должен быть рассмотрен как фактическое значение и заменить значением $HOME?
Спасибо.
Можно использовать envsubst
утилита. Например, учитывая следующее configfile
foo=bar
BASE_DIR=$HOME/flshrc
USER=$USER
затем
$ envsubst < configfile | awk -F= '$1 == "BASE_DIR" {print $2}'
/home/steeldriver/flshrc
Необходимо полагать, что другой метод предоставляет конфигурацию сценарию:
конфигурация:
foo=bar
export BASE_DIR=$HOME/flshrc
основной:
source config
echo "$BASE_DIR"
исходное имя файла [аргументы] - Чтение и выполняет команды от имени файла в текущей среде оболочки
Вероятно, необходимо добавить путь к основному сценарию к source
команда, иначе config
файл разыскивается в текущем каталоге:
основной:
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
source "$SCRIPT_DIR/config"
echo "$BASE_DIR"